- 01
- 02
- 03
- 04
- 05
- 06
- 07
- 08
- 09
- 10
- 11
- 12
if (getMaterialDom().ztest_)
{
device.SetRenderState(D3DRS_ZENABLE, TRUE);
device.SetRenderState(D3DRS_ZFUNC, D3DCMP_LESSEQUAL);
}
else
device.SetRenderState(D3DRS_ZENABLE, FALSE);
if (getMaterialDom().zwrite_)
device.SetRenderState(D3DRS_ZWRITEENABLE, TRUE);
else
device.SetRenderState(D3DRS_ZWRITEENABLE, FALSE);
И, кстати, почему TRUE/FALSE, а не ZTRUE/ZFALSE true/false ?
Его дельфи неумеет elimination expression, поэтому, как он говорит: "Всегда нужно кешировать в переменные".
гусь свинье не товарищ
Разве можно const ставить перед auto в С++0х?
Микрософт эту глупость со времен винапи пропагандируют до сих пор во всех своих геймдейвских примерах для DX.
Что такое TRUE и FALSE по выдранному постером куску кода нам не ясно. Это могут быть константы неизвестного типа, это могут быть ключевые слова перечисления и даже макросы. Кажется, что последнее наиболее вероятно и за TRUE/FALSE кроются страшные, "изпальцавысосанные" целочисленные коды.
но SetRenderState принимает BOOL, что определён как int, да :)
Из этого вывод: :(
А сделали они это для поддержки WIN API в pure Си.
Я слышал, что DX можно программировать под pure Си без С++ враперов. Кто-нибудь пробовал?
device.SetRenderState(D3DRS_ZENABLE, getMaterialDom().ztest_);
if (getMaterialDom().ztest_) device.SetRenderState(D3DRS_ZFUNC, D3DCMP_LESSEQUAL);
Вместо 07 нужно было:
device.SetRenderState(D3DRS_ZFUNC, D3DCMP_ALWAYS);
Копаться, чтобы найти, почему не работал один материал, пришлось долго. Вторая ошибка дебага: думать, что чужой код работает правильно. (с)
Можно грабить корованы.