0
我使用NDK與Android上的庫GLESv1_CM渲染簡單場景。Android NDK:OpenGL ES中的奇怪線條座標
void render(Rect viewport)
{
glViewport(viewport.left, viewport.top, viewport.Width(), viewport.Height());
glClear(GL_COLOR_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrthof(viewport.left, viewport.right, viewport.top, viewport.bottom, -1, 1);
GLfloat points[] = { 5, 50, 1, 1, 1, 1,
7, 50, 1, 1, 1, 1,
7, 50, 1, 0, 0, 1,
7, 52, 1, 0, 0, 1,
8, 50, 0, 1, 0, 1,
10, 50, 0, 1, 0, 1};
glEnableClientState(GL_VERTEX_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glVertexPointer(2,GL_FLOAT,sizeof(GLfloat)*6,&points);
glColorPointer(4,GL_FLOAT,sizeof(GLfloat)*6,&points[2]);
glDrawArrays(GL_LINES,0,6);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);
}
我希望有3交叉線,但是當我Android 2.2或3.2上設備運行它,我有這樣的:
甚至更上Android模擬器與Android 4(更新:同與2.3模擬器),我有這樣的:
是否有可能使它看起來像這張圖片上在所有Android版本的所有設備上不使用opengl2?
謝謝
不幸的是,這種解決方案不起作用。它只會將所有點移到右上角,因爲它應該這樣做。我認爲這是因爲它是爲3D編寫的,而其次,它是爲opengl2編寫的,而不是用於opengl ES。但是,謝謝你有趣的鏈接 – 2012-02-01 13:36:26
呃,不。如果您的世界座標精確地映射到屏幕像素的正投影,那麼該代碼片段會調整0.375像素。它肯定不會將「所有點指向右上方」。也許你有一個不同的模型視圖矩陣......你原來的問題不包括它,所以我認爲它是身份矩陣。 – 2012-02-01 14:21:11
好吧,我糾正了一點我的代碼,現在它的工作。沒有我想要的那麼完美,但好多了。謝謝 – 2012-02-01 15:43:09