Странная проблема ATI против Nvidia TRIANGLE_STRIP

У меня есть этот код, я использую тест для моего двигателя, над которым я работаю.

На моем NVIDIA NVS 4200M он отображает GL_TRIANGLE_STRIP, как и ожидалось.
На моем ATI Radeon 5800 кажется, что он рисует треугольник.

shader.begin();

Matrix4<float> temp = getActiveCamera()->getProjectionMatrix() * getActiveCamera()->getObjectToWorld().fastInverse();

glUniformMatrix4fv(shader["mvp"], 1, GL_TRUE, temp.getArray());

glBegin(GL_TRIANGLE_STRIP);

glVertexAttrib3f(shader["colour"],0,1,0);
glVertexAttrib3f(shader["coord3d"],-.5,-.5,0);

glVertexAttrib3f(shader["colour"],1,1,0);
glVertexAttrib3f(shader["coord3d"],0.5,-.5,0);

glVertexAttrib3f(shader["colour"],1,0,1);
glVertexAttrib3f(shader["coord3d"],-.5,.5,0);

glVertexAttrib3f(shader["colour"],0,1,1);
glVertexAttrib3f(shader["coord3d"],.5,.5,0);

glEnd();

shader.end();

Вот как это выглядит на моих двух компьютерах.

https://www.dropbox.com/s/sgm2j978tx2ipnp/not%20working.png

https://www.dropbox.com/s/27idv0b8k0p4pcx/working.png

0

Решение

Эту проблему можно исправить, перейдя на более высокую версию GLSL, сейчас я использую 330. Кроме того, я переключился на использование #version 330, чтобы все мои атрибуты были «включены», а мои переменные «вне» и использовался макет (location = #).

1

Другие решения

Каковы значения матрицы проекции камеры и модели? Если они стандартные (без изменений по сравнению с исходными), вы должны смотреть вниз по оси -z, в этом случае шов двух треугольников должен быть от (.5, -.5) до (-.5, .5 ) (внизу справа вверху слева). В случае карты ATI это не так (она идет от нижнего левого к верхнему правому углу). Если вы на самом деле смотрите на задние грани треугольников, драйвер OpenGL для карты может отбирать грани. Если это правда, я бы не ожидал, что это что-то привлечет, но вы никогда не узнаете.

Одним из тестов этого будет вызвать glDisable (GL_CULL_FACE) и посмотреть, отрисовывает ли он то, что вы ожидаете.

Рекомендации по выбору лица:
http://www.khronos.org/opengles/documentation/opengles1_0/html/glCullFace.html

Повеселись,

0

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector