实验六 OpenGL模型视图变换(实验提高)

(用键盘函数实现茶壶的旋转与停止旋转;茶壶的平行投影和透视投影切换;茶壶线框模式切换)

 (q旋转与停止旋转;w投影的切换;e线框模式的切换;d退出)

 

 


#include <stdlib.h>
#include <GL/glut.h>

float fTranslate;//整体平移因子
float fRotate = 0.0f;//整体旋转因子
float tRotate = 0.0f;//茶壶旋转因子

bool tAnim = false;//茶壶旋转
bool bPersp = false;//渲染
bool bAnim = false;//整体旋转
bool bWire = false;//填充、线框

int wHeight = 0;
int wWidth = 0;
float place[] = { 0, 0, 5 };

void Draw_Scene()
{
	glPushMatrix();//当前矩阵压栈
	glTranslatef(place[0], place[1], place[2]);//平移,放在桌面上的高度
	glRotatef(90, 1, 0, 0); //茶壶绕x轴旋转的角度
	glRotatef(tRotate, 0, 1, 0);
	glScalef(1.8,1.8, 1.8);
	glutSolidTeapot(5);//size
	glPopMatrix();
}

void updateView(int width, in
  • 2
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
以下是一个简单的OpenGL模型视图变换实验代码,可以让你了解如何进行视图变换。这个例子展示了一个立方体,你可以使用鼠标和键盘控制旋转和缩放。 ``` #include <GL/glut.h> int width = 800; int height = 600; float angleX = 0.0f; float angleY = 0.0f; float zoom = 1.0f; void display() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glMatrixMode(GL_MODELVIEW); glLoadIdentity(); glTranslatef(0.0f, 0.0f, -5.0f); glRotatef(angleX, 1.0f, 0.0f, 0.0f); glRotatef(angleY, 0.0f, 1.0f, 0.0f); glScalef(zoom, zoom, zoom); glutWireCube(1.0f); glutSwapBuffers(); } void resize(int w, int h) { width = w; height = h; glViewport(0, 0, w, h); glMatrixMode(GL_PROJECTION); glLoadIdentity(); gluPerspective(60.0f, (float)w / (float)h, 0.1f, 100.0f); } void keyboard(unsigned char key, int x, int y) { switch (key) { case 'w': angleX += 5.0f; break; case 's': angleX -= 5.0f; break; case 'a': angleY -= 5.0f; break; case 'd': angleY += 5.0f; break; case '+': zoom += 0.1f; break; case '-': zoom -= 0.1f; break; } glutPostRedisplay(); } int main(int argc, char** argv) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB | GLUT_DEPTH); glutInitWindowSize(width, height); glutCreateWindow("Model View Transformation"); glutDisplayFunc(display); glutReshapeFunc(resize); glutKeyboardFunc(keyboard); glEnable(GL_DEPTH_TEST); glutMainLoop(); return 0; } ``` 在这个例子中,我们首先创建了一个窗口,并启用了深度测试。在显示函数中,我们将当前矩阵设置为模型视图矩阵,然后对其进行变换,包括平移、旋转和缩放。最后,我们绘制一个线框立方体。在调整窗口大小时,我们将当前矩阵设置为投影矩阵,并调用gluPerspective函数以设置透视投影。在键盘回调函数中,我们根据按键来调整旋转和缩放。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值