проблема вращающейся текстуры вокруг ее центра в OpenGL - PullRequest
0 голосов
/ 10 ноября 2011

Я пытаюсь повернуть текстуру вокруг ее центра, и я добился этого с помощью этого кода, но пока он вращается, изображение также отображается под некоторым углом (поэтому изображение не может быть правильно видно в некоторых ракурсах), как показано на прилагаемых фотографиях.помогите мне решить эту проблему

вот мой код

    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();

    }

enter image description here

enter image description here

enter image description here

1 Ответ

1 голос
/ 10 ноября 2011

Похоже, что ваши текстурные координаты могут просто ссылаться на слишком большую часть текстуры - что может произойти, если какая-то часть вашего кода дополняет изображение, не являющееся степенью двойки, до размера текстуры степени двойки, но непередача соответствующих знаний.Итак, вы вращаетесь вокруг центра текстуры, но ваше фактическое изображение использует только часть в углу вашей текстуры.

Я не вижу ничего в вашем примере кода, чтобы показать, как вы загружаетеизображение или кто помещает значения в texturebuffer, но это были бы умные области, чтобы посмотреть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...