Executor
> Ты хочешь два буфера объединить в один как я понял.
Больше не хочу =) гемморно и профита никакого...
PS ок ок умолкаю =)
Pixar
AxMeT
Давайте все таки вопросы не по уроку конкретно задавать в разделе "Вопросы по программированию", это будет гораздо удобнее отслеживать :)
glValidateProgram
следует вызывать только после glUseProgram ?
yatagarasu
> glValidateProgram
Да. Мало того, перед вызовом glValidateProgram надо установить различные номера текстурных юнитов на семплера и т.п, потому что:
glValidateProgram checks to see whether the executables contained in program can execute given the current OpenGL state.
Это значит что glValidateProgram проверяет может ли быть использована шейдерная программа с текущим стейтом, фактически как
если бы ты тут же воспользовался шейдерной программой после вызова glValidateProgram, и если программа не валидна, то ты не
сможешь ее использовать пока не установишь правильные стейты. А вообще glValidateProgram рекомендуется использовать только
при разработке, в релизе ее можно не использовать уже.
KpeHDeJIb
понятно, спасибо
еще вопрос. иногда валится на на вызове glBindVertexArray во время рисования.
сделал вроде все один в один. meshVAO равен 1. всегда.
иногда рисует триугольник иногда валится где-то в недрах nvogl....dll
yatagarasu
Скорее всего гдето гадишь в память... Без кода сложно чтото сказать...
yatagarasu
Поддерживаю Executor, возможно где-то выходишь за пределы массива, либо задаешь размеры больше чем передаешь массив.
спасибо. сегодня попробую разобраться.
yatagarasu
gdebugger тебе в помощь...
точно такой же access violation иногда возникает при запуске скомпиленного из примера.
то ли дело в 2010 студии, то ли у меня что-то с видюхой.
семерку между тестами уже переустанавливал, разную. так что вряд-ли она.
upd:
хм. да. похоже в семерке с апдейтом мне пришли не последние дрова. ща обновляюсь.
upd:
да, это действительно помогло.
KpeHDeJIb
Кстати, тут походу нашлась ошибочка в примере:
http://www.gamedev.ru/code/forum/?id=142869
В общем вроде бы нигде нет glBindFragDataLocation и лейаутов вроде тоже нет. Или просто не по глазам.
Executor
Дал комментарий:
http://www.gamedev.ru/code/forum/?id=142869#m13
Дублирую тут:
Erion
> Этот пример не соответствует спецификации и будет работать не на всех
> видеокартах/версиях драйверов.
Executor
> Видимо просто опечатка...
> Надо обязательно вызывать эту функцию или использовать лейауты...
Тогда поясните что значат следующие строчки в спеке:
When a program is linked, any varying out variables without a binding speci- fied either through BindFragDataLocationIndexed or BindFragDataLocation, or explicitly set within the shader text will automatically be bound to fragment colors and indices by the GL. All such assignments will use color indices of zero.
Может я неправильно понял, что без использования этих функций все переменные помеченные как out будут иметь индекс 0?
Да, наверное так и есть. В статье наверное стоит небольшое дополнение сделать по этому поводу.
Переводил код на Delphi. В результате получил пустое окно. После долгих раздумий выяснилось, что что-то с проекцией.
Процедура вычисления матрицы такая же, как и в примере:
procedure Matrix4Perspective(var Matr: TMat4;fovy,aspect,zNear,zFar: GLfloat); var f,A,B: GLfloat; begin f := 1/Tan( fovy*Pi/( 360)); A := ( zFar+zNear)/( zNear-zFar); B := ( 2*zNear*zFar)/( zNear-zFar); Matr[0] := f/aspect; Matr[1] := 0; Matr[2] := 0; Matr[3] := 0; Matr[4] := 0; Matr[5] := f; Matr[6] := 0; Matr[7] := 0; Matr[8] := 0; Matr[9] := 0; Matr[10] := A; Matr[11] := B; Matr[12] := 0; Matr[13] := 0; Matr[14] := -1.0; Matr[15] := 0; end;
При использовании параметров функции из урока - черный экран. Подставил такие:
Matrix4Perspective(ProjectionMatrix,60,4/3,-0.5,0.5);
В чем может быть дело?
DimaO
> Matrix4Perspective(ProjectionMatrix,60,4/3,-0.5,0.5);
zNear не может быть отрицательным равно как и равным нулю. Иначе получается бессмыслица. Проверяй все еще раз, единственный совет.
Тема в архиве.
Где Заказать Кредитную Карту Кредит 42% Где Заказать Кредитную Карту 16 рублей в банке j2k3. redir.bbmb.ru |