[英]issue in rotating texture around its center in OpenGL
我正在尝试围绕纹理的中心旋转纹理,并且已经通过此代码实现了,但是在旋转图像时,图像也会以一定角度显示(因此,在某些角度无法正确看到图像),如所附图片所示,可以帮助我解决这个问题
这是我的代码
public void onSurfaceChanged(GL10 gl, int width, int height) {
gl.glViewport(0, 0, width, height);
gl.glOrthof(0, 320, 0, 480, 0, 1);
gl.glMatrixMode(GL10.GL_MODELVIEW);
gl.glLoadIdentity();
gl.glEnable(GL10.GL_TEXTURE_2D);
}
正方形的顶点是
float vertices[] = {
-.25f,.25f,0,
-.25f,-.25f,0,
.25f,.25f,0,
.25f,-.25f,0
};
这是我的绘画方法
public void draw(GL10 gl) {
gl.glPushMatrix();
gl.glTranslatef(-.125f, -.125f, 0f);
gl.glRotatef(r,0, 0,-1 );
gl.glTranslatef(.125f, .125f, 0);
// Point to our buffers
gl.glEnableClientState(GL10.GL_VERTEX_ARRAY);
gl.glEnableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
// Set the face rotation
gl.glFrontFace(GL10.GL_CW);
// Point to our vertex buffer
gl.glVertexPointer(3, GL10.GL_FLOAT, 0, vertexbuffer);
gl.glTexCoordPointer(2, GL10.GL_FLOAT, 0, texturebuffer);
// Draw the vertices as triangle strip
gl.glDrawArrays(GL10.GL_TRIANGLE_STRIP, 0, 4);
//Disable the client state before leaving
gl.glDisableClientState(GL10.GL_VERTEX_ARRAY);
gl.glDisableClientState(GL10.GL_TEXTURE_COORD_ARRAY);
r = r+1;
gl.glPopMatrix();
}
看来您的纹理坐标可能只是引用了太多的纹理—如果您的代码的某些部分将非2的幂的图像填充为2的幂的纹理大小却没有传递,则可能会发生这种情况相关知识。 因此,您围绕纹理的中心旋转,但是实际图像仅使用纹理角落的一部分。
在您的示例代码中,我看不到任何内容来显示如何加载图像或谁将值放入texturebuffer
但这些都是值得研究的领域。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.