簡體   English   中英

glRotatef不旋轉任何東西

[英]glRotatef does not rotate anything

問題是:我的三角形不旋轉! 為什么? 我做錯了什么?

這是代碼:

main.cpp

#include <iostream>
#include <GL/glut.h>
#include <GL/gl.h>
#include "myobject.h"

using namespace std;

Vector3f position = Vector3f(0.0f,0.0f,0.0f);

myobject *Ob = new myobject(position);

float _angle = 0.1f;

void render(){
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    glMatrixMode(GL_MODELVIEW);
    glLoadIdentity();      

    _angle += 0.4f;

    glPushMatrix();  
          glTranslatef (0.0f, -0.0f, -0.2f);
          glRotatef(_angle, 1.0f, 0.0f, 0.0f);
          Ob->draw();
    glPopMatrix();

    glutSwapBuffers();



}

void init(){
    glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
    glutInitWindowPosition(100,100);
    glutInitWindowSize(640, 480);
    glutCreateWindow("test");

    glutDisplayFunc(render);

    glutMainLoop();
}


int main(int argc, char * argv[]) {

    glutInit(&argc, argv);
    init();
    return 0;
}

myobject.cpp

#include <iostream>
#include <GL/glut.h>
#include <GL/gl.h>
#include "myobject.h"

using namespace std;

myobject::myobject(Vector3f pos)
{
    _position = pos;
    _size = 0.0f;
}

myobject::~myobject()
{
}


void myobject::draw()
{
    glBegin(GL_TRIANGLES);
     glColor3f(0.2f,0.2f,0.5f);
     glVertex3f( 0.0f, 0.0f, 0.5f);  
     glVertex3f(-1.0f,-0.5f, 0.0f);  
     glVertex3f( 0.5f,-0.5f, 0.0f);  
    glEnd();
}

您確定您正在運行動畫嗎?

可能您只需要調用glutPostRedisplay()您的render()函數即可。 這樣,GLUT將更新窗口和動畫。

更好的選擇是使用:

glutIdleFunc(myIdle);

和:

void myIdle()
{
    updateScene(deltaTime);
    renderScene();
    glutSwapBuffers();
}

另一件事:嘗試使用現代的opengl ...而不是舊的...

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM