próbuję uczynić dwuwymiarowy półpłaszczyźnie w OpenGL z następującego kodu:OpenGL: Trójkąty z punktów w nieskończoności
void renderHalfplane(double *x, double *n)
{
glPushMatrix();
double theta = -360.0 * atan2(n[0], n[1])/(2.0*PI);
glTranslated(x[0], x[1], 0);
glRotated(theta, 0, 0, 1.0);
glBegin(GL_TRIANGLES);
glVertex4d(0.0, 0.0, 0.0, 1.0);
glVertex4d(1.0, 0.0, 0.0, 0.0);
glVertex4d(0.0,-1.0, 0.0, 0.0);
glVertex4d(0.0, 0.0, 0.0, 1,0);
glVertex4d(-1.0,0.0, 0.0, 0.0);
glVertex4d(0.0,-1.0, 0.0, 0.0);
glEnd();
glPopMatrix();
}
Tutaj używam współrzędne jednorodne rysować trójkąty z dwoma wierzchołkami w "nieskończoność."
Ten kod działa jak czar na moim komputerze, ale użytkownik zgłasza, że nie renderuje się poprawnie na swoim: zamiast nieskończonej połówki widzą dwa (skończone) trójkąty.
Czy korzystanie z współrzędnych W jest niezdefiniowane? Czy jest to coś, co działa tylko w niektórych wersjach OpenGL? Próbowałem przeglądać specyfikacje OpenGL w Khronos, ale nie mogłem znaleźć sekcji, w której uwzględniono renderowanie prymitywów o współrzędnej W 0.
jakie jest urządzenie Twojego użytkownika? – Bahbar
Według użytkownika używa laptopa z systemem Ubuntu ze sterownikami Mesa OpenGL. Mam pulpit z Ubuntu, ale renderuje się dobrze, gdy testuję tam kod. – user168715
To bardzo dziwne, aby użyć w = 0 ... powinieneś przetestować go na różnych sterownikach kart graficznych. – Luca