render_opengl.cpp
上传用户:gzqinmao
上传日期:2022-07-13
资源大小:472k
文件大小:1k
源码类别:

OpenGL

开发平台:

Visual C++

  1. #include <windows.h>
  2. // Standard OpenGL header
  3. #include <GL/gl.h>
  4. #include "Gut.h"
  5. #include "render_data.h"
  6. static Matrix4x4 g_view_matrix;
  7. bool InitResourceOpenGL(void)
  8. {
  9. // 计算出一个可以转换到镜头坐标系的矩阵
  10. g_view_matrix = GutMatrixLookAtRH(g_eye, g_lookat, g_up);
  11. // 投影矩阵
  12. Matrix4x4 projection_matrix = GutMatrixPerspectiveRH_OpenGL(90.0f, 1.0f, 1.0f, 100.0f);
  13. // 设置视角转换矩阵
  14. glMatrixMode(GL_PROJECTION);
  15. glLoadMatrixf( (float *) &projection_matrix);
  16. //glShadeModel(GL_FLAT);
  17. return true;
  18. }
  19. bool ReleaseResourceOpenGL(void)
  20. {
  21. // 没做任何事
  22. return true;
  23. }
  24. // 使用OpenGL来绘图
  25. void RenderFrameOpenGL(void)
  26. {
  27. // 清除画面
  28. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  29. glEnable(GL_DEPTH_TEST);
  30. // 设置好GPU要去哪读取顶点坐标数据
  31. glEnableClientState(GL_VERTEX_ARRAY);
  32. glVertexPointer(3, GL_FLOAT, sizeof(Vertex_VC), &g_vertices[0].m_Position);
  33. // 设置好GPU要去哪读取顶点颜色数据
  34. glEnableClientState(GL_COLOR_ARRAY);
  35. glColorPointer(4, GL_UNSIGNED_BYTE, sizeof(Vertex_VC), &g_vertices[0].m_RGBA);
  36. // 设置要改变GL_MODELVIEW矩阵
  37. glMatrixMode(GL_MODELVIEW);
  38. // 设置转换矩阵
  39. Matrix4x4 world_view_matrix = g_object_matrix * g_view_matrix;
  40. glLoadMatrixf( (float *) &world_view_matrix);
  41. // 画出金字塔的8条边线
  42. glDrawElements(
  43. GL_TRIANGLES, // 指定所要画的基本图形种类
  44. 18, // 有几个索引值
  45. GL_UNSIGNED_SHORT, // 索引值的类型
  46. g_indices // 索引值数组
  47. );
  48. // 把背景backbuffer的画面显示出来
  49. GutSwapBuffersOpenGL();
  50. }