OpenGL ES的纹理问题的android

我想伸展或瓷砖一些位图一个OpenGL对象。 我使用的位图的一部分的图像。 但我的戒指和中等纹理与图像的平均颜色。 如果我改变图像色彩的变化,但画面未显示。

我这里充分代码

// ..in init/// gl.glEnable(GL10.GL_TEXTURE_2D); textures = new int[3]; bitmap = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.pizzaf); bitmap = Bitmap.createBitmap( bitmap, 0, 0, bitmap.getWidth(), bitmap.getHeight(), null, true); bitmap1 = BitmapFactory.decodeResource(mContext.getResources(), R.drawable.pizslice); bitmap1 = Bitmap.createBitmap( bitmap1, 0, 0, bitmap1.getWidth(), bitmap1.getHeight(), null, true); // Tell OpenGL to generate textures. gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_WRAP_S, GL10.GL_CLAMP_TO_EDGE); // gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, // GL10.GL_LINEAR); // gl.glTexParameterf(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, // GL10.GL_LINEAR); gl.glGenTextures(1, textures, 0); }

并绘制功能

GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap1, 0); gl.glBindTexture(GL10.GL_TEXTURE_2D, 0); GLUT.glutSolidTorus(gl,0.175f, 0.95f, 12, 48); gl.glTranslatef(0,0, 0.2f); GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0); gl.glBindTexture(GL10.GL_TEXTURE_2D, 0); GLUT.glutSolidCone(gl, 1,0.01f, 12, 48); gl.glTranslatef(0,0, -0.4f); gl.glRotatef (180.0f, 1.0f, 0.0f, 0.0f); GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap1, 0); gl.glBindTexture(GL10.GL_TEXTURE_2D, 0); GLUT.glutSolidCone(gl, 1,0.01f, 12, 48);

请帮助任何人。 我想打一个3D披萨

--------------解决方案-------------

有在你的代码三个问题:

  1. 你不正确地使用纹理对象
  2. 您在每个绘制调用初始化纹理
  3. glutSolidCone不提供纹理坐标(意思是:不能正确纹理的话)

定影(1)

纹理是根据该方案总是被加载:

GLuint texture_object_name;

glGenTextures(1,
&texture_object_name); // you can create texture object names in batches

glBindTexture(GL_TEXTURE_2D, // may differ, depending on texture target (ie kind of texture)
texture_object_name);

glPixelStorei(GL_UNPACK_ALIGNMENT, …); // </ depends on data format
glPixelStorei(GL_UNPACK_ROW_LENGTH, …); // <|
glPixelStorei(GL_UNPACK_SKIP_PIXELS, …); // <|
glPixelStorei(GL_UNPACK_SKIP_ROWS, …); // <|

glTexImage2D(GL_TEXTURE_2D, // again the target, depends on the kind of texture creates
0, // mipmap level
GL_RGBA, // internal format, GL_RGBA is one possibility, there are others
width, height, border, // border is usually 0
GL_BGRA, // format of the data input
GL_UNSIGNED_INT_8_8_8_8, // type of the data input -- those must match the data
texture_data );

glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, …); // mipmapping on/off and other settings
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, …); // you should really set those

定影(2)

一旦你固定的(1),你可以修复(2)。 要切换纹理渲染时,你只需要调用

glBindTexture(GL_TEXTURE_2D, texture_object_name);

在随后的绘图调用使用它。

定影(3)

(3)由自己定义的几何形状,提供合适的纹理坐标固定的。

分类:安卓 时间:2015-03-15 人气:0
分享到:

相关文章

Copyright (C) 55228885.com, All Rights Reserved.

55228885 版权所有 京ICP备15002868号

processed in 0.437 (s). 10 q(s)