因为glut只有32位的库,因此配置64位的freeglut代替glut。
freeglut下载地址:freeglut Windows Development Libraries (transmissionzero.co.uk)
1、demo1
#include <glut.h>
#include <freeglut.h>
void renderScene(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glBegin(GL_TRIANGLES);
glVertex3f(-0.5, -0.5, 0.0);
glVertex3f(0.5, 0.0, 0.0);
glVertex3f(0.0, 0.5, 0.0);
glEnd();
glutSwapBuffers();
}
// 绘制一个三角形
int main(int argc, char** argv)
{
glutInit(&argc, (char**)argv);
glutInitDisplayMode(GLUT_DEPTH | GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowPosition(100, 100);
glutInitWindowSize(800, 480);
glutCreateWindow("第一个glut程序");
glutDisplayFunc(renderScene);
glutMainLoop();
return 0;
}
2、demo2(拖拉缩放)
#include <math.h>
#include <glut.h>
#include <freeglut.h>
const double PI = 3.14159265358979323846;
float VIEW[] = { -0.8, 0.8, -0.8, 0.8, 1.0, 20.0 };
float SCALE_K[] = { 1.0, 1.0, 1.0 };
float EYE[] = { 0.0, 0.0, 2.0 };
float LOOK_AT[] = { 0.0, 0.0, 0.0 };
float EYE_UP[] = { 0.0, 1.0, 0.0 };
int WIN_W = 800;
int WIN_H = 600;
int MOUSE_X = 0;
int MOUSE_Y = 0;
float DIST = 2.0;
float PHI = 0.0;
float THETA = 0.0;
bool mouseLeftDown = false;
bool mouseRightDown = false;
void draw()
{
// 清除屏幕及深度缓存
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
// 设置投影矩阵, 平行投影 or 透视投影
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
// 调整视景体
if (WIN_W > WIN_H)
glFrustum(VIEW[0] * WIN_W / WIN_H, VIEW[1] * WIN_W / WIN_H, VIEW[2], VIEW[3], VIEW[4], VIEW[5]);
else
glFrustum(VIEW[0], VIEW[1], VIEW[2] * WIN_H / WIN_W, VIEW[3] * WIN_H / WIN_W, VIEW[4], VIEW[5]);
// 设置模型矩阵
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
glScalef(SCALE_K[0], SCALE_K[1], SCALE_K[2]); // 几何变换
gluLookAt(EYE[0], EYE[1], EYE[2],
LOOK_AT[0], LOOK_AT[1], LOOK_AT[2],
EYE_UP[0], EYE_UP[1], EYE_UP[2]); // 设置视点
glViewport(0, 0, WIN_W, WIN_H); // 设置视口
glBegin(GL_LINES); // 开始绘制线段(世界坐标系)
glColor4f(1.0, 0.0, 0.0, 1.0); // 设置当前颜色为红色不透明
glVertex3f(-0.8, 0.0, 0.0); // 设置x轴顶点(x轴负方向)
glVertex3f(0.8, 0.0, 0.0);

最低0.47元/天 解锁文章
514

被折叠的 条评论
为什么被折叠?



