2011-04-05 117 views
0

我是剛接觸Android的開發人員,我正在使用NDK玩OpenGL ES 1。不幸的是我遇到了Coordinate系統的問題。在官方示例中,以下代碼用於獲取Opengl Surface的寬度和高度。Android上的OpenGL ES座標系統?

eglQuerySurface(display, surface, EGL_WIDTH, &w); 
eglQuerySurface(display, surface, EGL_HEIGHT, &h); 

現在,當我想設置與

glViewport(0, 0, w ,h); 

視口和我渲染然後四邊形四邊形不是四通道,它是一個變形的矩形和居中。

如何正確設置視口和座標系?

回答

2

您的視口設置正確;你需要調整你的投影矩陣(或者等價的,如果你在ES 2.0而不是1.x)。例如。

glMatrixMode(GL_PROJECTION); 
glFrustumf(-(float)w/h, (float)w/h, -1, 1, 1, 500); 

OpenGL不會假設您的像素或視口的高寬比 - 您必須自己組織。

+0

好的,謝謝,但我怎麼能在OpenGL ES 1.x中做到這一點? glFrustrum在OpenGL ES 1.x中不受支持。 – dojordi 2011-04-05 18:24:31

+0

glFrustum是ES 1.x的一部分,請參閱http://www.khronos.org/opengles/sdk/1.1/docs/man/獲取文檔,http://www.khronos.org/registry/gles/api/ 1.0/gl.h,證明它在1.0和1.1之間。編輯:但其中沒有第二個'r',是否有可能因爲輸入錯誤而遇到麻煩? – Tommy 2011-04-05 18:29:08