#include "stdafx.h"
#include <gl/glew.h>
#include <gl/glut.h>
const int screenWidth = 800;
const int screenHeight = 600;
const int rectWidth = 400;
const int rectHeight = 300;
float fXTranslation = 0.0f; // 交互之平移参数
float fYTranslation = 0.0f;
float fZoom = 1.0f; // 交互之缩放参数
float fRotate = 0.0f; // 交互之旋转参数
void SetupRC()
{
glewInit();
glClearColor(0.0f, 0.0f, 0.0f, 1.0f);
glViewport(0, 0, screenWidth, screenHeight);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
//glOrtho(0, screenWidth, screenHeight, 0, 0, 5.0f);
glOrtho(-screenWidth/2.0f, screenWidth/2.0f, screenHeight/2.0f, -screenHeight/2.0f, 0, 5.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
void ReleaseRC(){}
void display()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glTranslatef(fXTranslation, fYTranslation, 0.0);
glScalef(fZoom, fZoom, 1.0 );
glRotatef(fRotate, 0, 0, 1 );
glColor3f(1.0f, 1.0f, 0.0f);
glRectf(-rectWidth/2.0f, -rectHeight/2.0f, rectWidth/2.0f, rectHeight/2.0f);
glutSwapBuffers();
}
void key(unsigned char key, int x, int y)
{
switch(key){
case 'a':
fZoom += 1.0/100.0f;
break;
case 'd':
fZoom -= 1.0/100.0f;
break;
}
glutPostRedisplay();
}
int main(int argc, char* argv[])
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGBA);
glutInitWindowSize(screenWidth, screenHeight);
glutCreateWindow("平移、绽放、旋转测试");
SetupRC();
glutDisplayFunc(display);
glutKeyboardFunc(key);
glutMainLoop();
ReleaseRC();
return 0;
}
测试程序:平移缩放旋转操作
最新推荐文章于 2020-12-09 15:37:08 发布