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

3D图形编程

开发平台:

Visual C++

  1. #include <stdio.h>
  2. #include "Gut.h"
  3. #include "render_dx9.h"
  4. #include "render_dx10.h"
  5. #include "render_opengl.h"
  6. void main(int argc, char *argv[])
  7. {
  8. // 默认使用DirectX 9来绘图
  9. char *device = "dx9";
  10. void (*render)(void) = RenderFrameDX9;
  11. bool (*init_resource)(void) = InitResourceDX9;
  12. bool (*release_resource)(void) = ReleaseResourceDX9;
  13. if ( argc > 1 )
  14. {
  15. // 如果命令行参数指定用OpenGL, 就改用OpenGL.
  16. if ( stricmp(argv[1], "opengl")==0 )
  17. {
  18. device = "opengl";
  19. init_resource = InitResourceOpenGL;
  20. release_resource = ReleaseResourceOpenGL;
  21. render = RenderFrameOpenGL;
  22. }
  23. // 如果命令行参数指定用DX10, 就改用DX10.
  24. else if ( stricmp(argv[1], "dx10")==0 )
  25. {
  26. #ifdef _ENABLE_DX10_
  27. device = "dx10";
  28. init_resource = InitResourceDX10;
  29. release_resource = ReleaseResourceDX10;
  30. render = RenderFrameDX10;
  31. #endif // _ENABLE_DX10_
  32. }
  33. }
  34. // 在(100,100)的位置打开一个大小为(512x512)的窗口
  35. GutCreateWindow(100, 100, 512, 512, device);
  36. // 做OpenGL或DirectX初始化
  37. if ( !GutInitGraphicsDevice(device) )
  38. {
  39. printf("Failed to initialize %s devicen", device);
  40. exit(0);
  41. }
  42. // 载入shader
  43. if ( !init_resource() )
  44. {
  45. release_resource();
  46. printf("Failed to load resourcesn");
  47. exit(0);
  48. }
  49. // 主循环
  50. while( GutProcessMessage() )
  51. {
  52. render();
  53. }
  54. // 释放shader
  55. release_resource();
  56. // 关闭OpenGL/DirectX绘图设备
  57. GutReleaseGraphicsDevice();
  58. }