![]() |
Ответ: Xors3D
рисует "это" и в релизе и в дебаге.
win7, i7-2630QM, radeon HD 6850M, 8GB RAM |
Ответ: Xors3D
у меня черный квадрат Малевича
winXP, amd athlon , geoforce 7200gt, 512MB RAM |
Ответ: Xors3D
Вложений: 1
Че не нравится ксорсу в шейдере!!!
Can't create effect from file 'deferred.fx'! ID3DXEffectCompiler: There were no techniques ID3DXEffectCompiler: Compilation failed это пишет лог вот сам шейдер |
Ответ: Xors3D
Вероятно то что он в utf8?
|
Ответ: Xors3D
Цитата:
|
Ответ: Xors3D
Код:
float4x4 matrixWorldViewProj : MATRIX_WORLDVIEWPROJ; // матрица итоговая Код:
output.position =mul(input.position, matrixWorld); Код:
output.position =mul(output.position,matrixCamProj); matrixCamView Код:
xSetEffectMatrix(entity,"matrixCamView",xGetViewProjMatrix(Camera),0); Код:
float4x4 matrixWorldViewProj : MATRIX_WORLDVIEWPROJ; // матрица итоговая Код:
output.position =mul(input.position, matrixWorld); Что я делаю не так? |
Ответ: Xors3D
output.position =mul(input.position, matrixWorld);
output.position =mul(output.position,matrixCamView); ты в выход сначала одно пишешь потом затираешь другим... это как так. Оно должно проканать? |
Ответ: Xors3D
Я сначала умножаю ентити на матрицу её позиции в мире, а затем я умножаю результат на произведение видовой и проекционной матрицы, тут сложней ошипка и не внутри шейдера все-таки
|
Ответ: Xors3D
А точно.. не всматривался.. просто я обычно использую временные переменные поэтому тупанул
|
Ответ: Xors3D
На идеологически правильную запись:
xSetEffectMatrix(entity, "matrixCamView",(float*)(*xGetViewProjMatrix(shade cam)), 0); Оно мне пишет: \bin\main.cpp|104|error: invalid type argument of 'unary *'| Есть ли другой рабочий способ получить указатель на матрицы изнутри хорса? |
Ответ: Xors3D
Эх, я забыл, что почти все указатели приводятся к типу Handle. Очередная хрень, связанная с поддержкой кучи языков.
В общем xGetViewProjMatrix на самом деле возвращает D3DXMATRIX* У него есть оператор приведения к float*, который возвращает указатель на массив из 4х4 флоутов. xSetEffectMatrix в качестве третьего параметра принимает float*. Но вместо всех этих указателей в функциях фигурирует Handle. Поэтому сначала надо Handle привести к D3DXMATRIX*, затем применить оператор (float*), и затем назад в Handle. Для всех приведений надо использовать reinterpret_cast. Прошу прощения за такой дебилизм. Если найду время, то постараюсь подправить генератор хедеров для С++. |
Ответ: Xors3D
Насчет смены разрешения экрана. Может сделать функцию которая изменяет размер окна и заново устанавливает вьюпорт относительно новых настроек в DX ?
|
Ответ: Xors3D
И еще... у каждого загруженного объекта есть материалы... Было бы хорошо если бы была возможность присваивать файл эффекта на материал, и тем самым шейдер работал бы на всех sub объектах модели...
|
Ответ: Xors3D
В новой ревизии больше не пишет ошибки компиляции шейдеров в лог. Это жестоко и негуманно.
|
Часовой пояс GMT +4, время: 16:47. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Перевод: zCarot