OpenGL中的正交投影

时间:2011-03-16 15:34:39

标签: opengl-es

我正在尝试使用gl.glOrthof ...

设置正交投影

但是,我传递给函数的值是无关紧要的,宽度和高度似乎得到常量浮点值,并且它们与我的glOrthof属性不匹配。

我的surfaceChanged代码:

gl.glViewport(0, 0, w, h);
gl.glMatrixMode(GL10.GL_PROJECTION);
gl.glLoadIdentity();
gl.glOrthof(0.0f, 10.0f, 10.0f, 0.0f, 0.0f, 1.0f);

我的抽奖代码:

gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
gl.glBindTexture(GL10.GL_TEXTURE_2D, texture);  
((GL11Ext) gl).glDrawTexfOES(positionX, positionY, 0.0f, 1.0f, 1.0f);

有什么想法吗?告诉我你是否需要了解一些事情。

1 个答案:

答案 0 :(得分:2)

glDrawTexfOES宽度和高度参数以像素为单位,因此不是

((GL11Ext) gl).glDrawTexfOES(positionX, positionY, 0.0f, 1.0f, 1.0f);

你应该使用

((GL11Ext) gl).glDrawTexfOES(positionX, positionY, 0.0f, texture_width, texture_height);

投影和模型视图矩阵仅影响x,y位置的定位,而不影响纹理缩放。选择要使用的纹理部分是使用裁剪矩形完成的。