我試圖渲染二維半平面OpenGL中使用下面的代碼點:OpenGL的:三角形與無限
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();
}
這裏我使用齊次座標在繪製與兩個頂點的三角形「無窮。」
此代碼的工作就像我的計算機上的魅力,但用戶報告它不能正確地呈現在他們:不是他們所看到的兩(有限)三角形的無限半平面。
是我使用W-座標0未定義行爲?這是否只適用於某些版本的OpenGL?我嘗試通過Khronos OpenGL規範查找,但找不到用w座標0呈現基元的部分。
什麼是你的用戶的設備? – Bahbar 2010-10-20 18:36:40
根據用戶,他正在使用一臺運行Ubuntu的筆記本電腦與Mesa OpenGL驅動程序。我有一個Ubuntu的桌面,但是當我在那裏測試代碼時,它的效果很好。 – user168715 2010-10-20 18:41:02
使用w = 0是很奇怪的......你應該在不同的圖形卡驅動程序上測試它。 – Luca 2010-10-22 05:15:17