我正在尝试使用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);
有什么想法吗?告诉我你是否需要了解一些事情。
答案 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位置的定位,而不影响纹理缩放。选择要使用的纹理部分是使用裁剪矩形完成的。