openGL 坐标系(2)

本文详细介绍了一个使用OpenGL进行图形渲染的例子,其中包括如何设置渲染上下文、使用不同的矩阵进行几何体变换,以及如何通过调整视口大小来改变渲染效果。具体探讨了正交矩阵的应用以及视图变换的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

导读:
  2//注意这个矩阵是正交的,没有正交就用,好像有放缩作用
  GLfloat Tmat1[16] = { NUM, NUM, 0.0, 0.0,
  -NUM, NUM, 0.0, 0.0,
  0.0, 0.0, 1.0, 0.0,
  0.0, 0.0, 0.0, 1.0};
  GLfloat Tmat2[16] = { 1.0, 0.0, 0.0, 0.0,
  0.0, 1.0, 0.0, 0.0,
  0.0, 0.0, 1.0, 0.0,
  1.0, 0.0, 0.0, 1.0,
  };
  7void setupRC(void) 8{ 9 glClearColor(0.0f, 0.0f, 0.0f, 1.0f);10 glShadeModel(GL_FLAT);11}
  12
  13void RenderScene(void)14{15 printf("RenderScene/n"); 16glClear(GL_COLOR_BUFFER_BIT);17glColor3f(0.0f, 1.0f, 1.0f);18 glMatrixMode(GL_MODELVIEW);19 glLoadIdentity();20 gluLookAt(0.0, 0.0, 5.0, // view point
  21 0.0, 0.0, 0.0, // focus point
  22 0.0, 1.0, 0.0); // up vector
  23
  24   glutSolidCube(0.5); // 原点的参考位置
  25 glMultMatrixf(Tmatr1); //这个矩阵的动作和下面的两个变换是一样的。
  glMultMatrixf(Tmatr2);26// glRotatef(45.0, 0.0, 0.0, 1.0);27// glTranslatef(3.0, 0.0, 0.0);
  28 glutSolidCube(1.0);29
  30 glutSwapBuffers();31}
  32
  33void ChangeSize(int w, int h)34{35 printf("ChangeSize/n"); // 从这里看出,是先调用ChangeSize()的36 GLfloat nRange = 10.0f
  37
  38 if(h == 0)39 h = 1
  40 GLfloat fRatio = (GLfloat)w / (GLfloat)h;41
  42 glMatrixMode(GL_PROJECTION);43 glLoadIdentity();44
  45 if(w <= h)46 glOrtho(-nRange, nRange, -nRange / fRatio, nRange / fRatio, 1.0, nRange);47 else
  48 glOrtho(-nRange * fRatio, nRange * fRatio, -nRange, nRange, 1.0, nRange);49
  50 glViewport(0, 0, w ,h);51
  52 glMatrixMode(GL_MODELVIEW);53 glLoadIdentity();54}
  55
  56int main(int argc, char* argv[])57{58 glutInit(&argc, argv);59 glutInitDisplayMode(GLUT_RGB | GLUT_DOUBLE);60 glutInitWindowSize(800, 600);61 glutCreateWindow("example");62
  63 glutReshapeFunc(ChangeSize);64 glutDisplayFunc(RenderScene);65
  66 setupRC();67
  68 glutMainLoop();69
  70 std::cout << "Hello world!" << std::endl;71 return 0

本文转自
http://blog.sina.com.cn/s/blog_4a1aa6d801009fi8.html
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值