Android:OpenGL纹理和glDrawTexfOES问题

时间:2010-11-10 02:07:59

标签: android opengl-es textures

我试图遵循我能找到的所有信息,但我没有运气找到纹理问题的根源,并且真的可以用手了。

以下是我正在尝试使用glDrawTexfOES绘制3个背景的代码。这3件应该看起来像绿草。

public void onDrawFrame(GL10 gl) {

    gl.glClear(GL10.GL_COLOR_BUFFER_BIT | GL10.GL_DEPTH_BUFFER_BIT);
    gl.glLoadIdentity();

    gl.glFrontFace(GL10.GL_CW);
    gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
    gl.glEnable(GL10.GL_TEXTURE_2D);

    gl.glBindTexture(GL10.GL_TEXTURE_2D, grass);

    gl.glColor4x(0x10000, 0x00000, 0x10000, 0x10000);

    ((GL11Ext) gl).glDrawTexfOES(0.0f, 0.0f, -8.0f, 32, 32);
    ((GL11Ext) gl).glDrawTexfOES(32.0f, 0.0f, -8.0f, 32, 32);
    ((GL11Ext) gl).glDrawTexfOES(64.0f, 0.0f, -8.0f, 32, 32);
}

而不是绿草,我得到3个棕色方块: http://img109.imageshack.us/img109/9670/84615249.jpg

任何有助于弄清楚为什么我的纹理无法正确显示的帮助都会非常感激!

在相关的说明中,为了构建简单的2D平铺游戏,glDrawTexfOES是生成平铺背景的最有效方法吗?

提前致谢, 哈利

2 个答案:

答案 0 :(得分:1)

您需要定义图像到矩形的映射 你可能只是得到图像的左上角像素。

INT []作物= {0,0,text_dimx,text_dimy}; ((GL11)gl).glTexParameteriv(GL10.GL_TEXTURE_2D,GL11Ext.GL_TEXTURE_CROP_RECT_OES,crop,0);

答案 1 :(得分:0)

如果您使用大多数OpenGL函数,那么您将获得该函数的文档,然后是示例。对于该功能,结果由遇到麻烦的人主导。

该功能可能比通常使用纹理稍快一些(我没有使用它,所以我不知道),但只是将纹理应用到四边形不需要扩展,并且非常便携。

为什么不试试并回到我们身边......可能是功能完美无缺,但是初始化纹理出了问题。使用简单的texture-a-quad方法也可以帮助你找到它。