Guest User

Untitled

a guest
Jul 5th, 2022
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.23 KB | None | 0 0
  1. #include <stdio.h>
  2. #include <stdint.h>
  3. #include <assert.h>
  4. #include <math.h>
  5. #include <GL/freeglut.h>
  6.  
  7. #define WindowW 800
  8. #define WindowH 600
  9. #define FbW 320
  10. #define FbH 240
  11. #define FbTexW 0x200
  12. #define FbTexH 0x100
  13. static const float VertexCoord[] = {0, 0, FbTexW, 0, 0, FbTexH, FbTexW, FbTexH};
  14.  
  15. static void initGl() {
  16. glEnable(GL_TEXTURE_2D);
  17. glEnableClientState(GL_VERTEX_ARRAY);
  18. glClearColor(0, 0, 0, 0);
  19. glShadeModel(GL_FLAT);
  20. glOrtho(0, FbW, FbH, 0, 1, -1);
  21. glVertexPointer(2, GL_FLOAT, 0, VertexCoord);
  22. }
  23.  
  24. static void resize(int w, int h) {
  25. int p = w * FbH;
  26. int q = h * FbW;
  27. if (p > q) {
  28. float w_ = (float)q / FbH;
  29. glViewport((int)roundf((w - w_) * 0.5f), 0, (int)roundf(w_), h);
  30. } else {
  31. float h_ = (float)p / FbW;
  32. glViewport(0, (int)roundf((h - h_) * 0.5f), w, (int)roundf(h_));
  33. }
  34. }
  35.  
  36. static void draw() {
  37. glClear(GL_COLOR_BUFFER_BIT);
  38. glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
  39. glutSwapBuffers();
  40. }
  41.  
  42. int main(int argc, char **argv) {
  43. glutInit(&argc, argv);
  44. glutInitDisplayMode(GLUT_DOUBLE);
  45. glutInitWindowSize(WindowW, WindowH);
  46. glutCreateWindow(argv[0]);
  47. initGl();
  48. glutDisplayFunc(draw);
  49. glutReshapeFunc(resize);
  50. glutMainLoop();
  51. return 0;
  52. }
  53.  
Advertisement
Add Comment
Please, Sign In to add comment