[英]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.