我对glCopyTexImage2D有一个问题 - 看看这个将以前渲染的场景剪切到纹理的util方法:
public static Texture cutRenderToTexture(GL g, int width, int height) {
IntBuffer buff = Buffers.newDirectIntBuffer(1);
g.glGenTextures(1, buff);
int tex = buff.get();
g.glBindTexture(GL.GL_TEXTURE_2D, tex);
checkGLError(g);
g.glCopyTexImage2D(GL.GL_TEXTURE_2D, 0, GL.GL_RGBA, 0, 0, width, height, 0);
checkGLError(g);
g.glClear(GL.GL_COLOR_BUFFER_BIT | GL.GL_DEPTH_BUFFER_BIT);
return TextureIO.newTexture(tex, GL.GL_TEXTURE_2D, width, height, width, height, false);
}
checkGLError是一个检查所有可能的OpenGL错误的简单方法 - 在这个例子中,我调用它两次以表明问题只与glCopyTexImage2D调用有关。我收到GL_INVALID_ENUM错误,但目标有效,GL_TEXTURE_2D已启用且OpenGL文档(https://www.opengl.org/sdk/docs/man4/xhtml/glCopyTexImage2D.xml)未指定此错误是否可能在任何其他情况下发生。
任何想法有什么不对?