glRotatef 不会旋转任何东西
glRotatef does not rotate anything
这是问题所在:我的三角形不旋转!为什么?我做错了什么?
代码如下:
主.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;
}
我的对象.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();
}
另一件事:尝试使用现代开放式...不是旧的...
相关文章:
- 如果C++类在类方法中具有动态分配,但没有构造函数/析构函数或任何非静态成员,那么它仍然是POD类型吗
- 与互斥锁相比,旋转锁可以保证上下文切换
- 奇怪的(对我来说)返回声明 - 在谷歌上找不到任何关于它的信息
- 如何在不产生任何垃圾的情况下获得C中的像素
- 为什么我不能在 C++ 中的特定函数重载中调用同一函数的任何其他重载?
- 绘制旋转的三角形
- 旋转模型矩阵时的形状失真
- 四边形的 2D 旋转
- C++映射有2个键,这样任何1个键都可以用来获取值
- Visual Studio(或任何其他工具)能否将地址解释为调用堆栈(boost上下文)的开头
- RtlCaptureStackBackTrace未捕获任何帧
- 垂直方向的 Gtk3+ 旋转按钮 (c/c++)
- 链表c++插入,所有情况都已检查,但没有任何工作
- C++模板函数,用于比较任何无符号整数和有符号整数
- 发布旋转矩阵(openGL/glm)
- 有关如何在OpenGL中正确旋转/翻译对象的任何建议,以实现以下效果
- 轻松BMP旋转图像到任何角度
- glRotatef 不会旋转任何东西
- 如何否定GLM四元数在任何单轴上的旋转
- 我可以在不执行任何旋转的情况下预加载 STL 贴图吗?