我想知道如何将不同的纹理绑定到不同的模型或如何改进我的代码。
我的代码:
public void onSurfaceCreated(GL10 gl, EGLConfig config) {
gl.glLoadIdentity();
GLU.gluPerspective(gl, 25.0f, (view.getWidth() * 1f) / view.getHeight(), 1, 100);
GLU.gluLookAt(gl, 0f, 8f, 12f, 0.0f, 0.0f, 0.0f, 0.0f, 25.0f, 0.0f);
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
gl.glEnable(GL10.GL_DEPTH_TEST);
gl.glEnable(GL10.GL_TEXTURE_2D);
loadTexture(gl, context, R.drawable.grndf);
loadTexture(gl, context, R.drawable.skintrip);
gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MIN_FILTER, GL10.GL_LINEAR);
gl.glTexParameterx(GL10.GL_TEXTURE_2D, GL10.GL_TEXTURE_MAG_FILTER, GL10.GL_LINEAR);
gl.glTexEnvx(GL10.GL_TEXTURE_ENV, GL10.GL_TEXTURE_ENV_MODE, GL10.GL_MODULATE);
}
private int[] mTexture = new int[2];
private void loadTexture(GL10 gl, Context mContext, int mTex) {
gl.glGenTextures(1, mTexture, 0);
gl.glBindTexture(GL10.GL_TEXTURE_2D, mTexture[0]);
Bitmap bitmap;
bitmap = BitmapFactory.decodeResource(mContext.getResources(), mTex);
GLUtils.texImage2D(GL10.GL_TEXTURE_2D, 0, bitmap, 0);
bitmap.recycle();}
答案 0 :(得分:1)
正如评论中所说,没有像模型或对象这样的概念。 OpenGL是一个状态机,这意味着在每次绘制调用时都会使用当前状态。因此,如果你想使用不同的纹理进行两次绘制调用,那么你必须确保在每次绘制调用时绑定正确的纹理:
glBindTexture(GL_TEXTURE_2D, texture1);
glDraw*... //First draw call using texture1
glBindTexture(GL_TEXTURE_2D, texture2);
glDraw*... //Second draw call using texture2