Advertisement
Guest User

Untitled

a guest
May 4th, 2015
230
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.11 KB | None | 0 0
  1. #include "stdafx.h"
  2. #include <gl/freeglut.h>
  3. #include <stdio.h>
  4. #include <stdlib.h>
  5. #include <windows.h>
  6.  
  7.  
  8.  
  9. const int n = 6;
  10. GLfloat point[n][3] =
  11. {
  12. { 1.40152f, 2.75472f, 0.0f }, { 4.84848f, 8.41509f, 0.0f }, { 4.84848f, 9.4f, 0.0 },
  13. { 6.21212f, 7.0566f, 0.0f }, { 5.0f, 4.22642f, 0.0f }, { 9.01515f, 1.32075f, 0.0f }
  14. };
  15.  
  16.  
  17. const GLint k = 3;
  18. const GLint m = n + k;
  19.  
  20. GLfloat knot[m] = { 0.000, 0.000, 0.000, 0.300, 0.500, 0.700, 1.000, 1.000, 1.000 };
  21.  
  22.  
  23. void render(void)
  24. {
  25. glClearColor(0.2f, 0.2f, 0.4f, 1.0f);
  26. glEnable(GL_DEPTH_TEST);
  27. glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
  28. glColor3f(1.0f, 0.0f, 0.0f);
  29. glPointSize(10.0f);
  30. glBegin(GL_POINTS);
  31. for (GLint i = 0; i<n; i++){ glVertex3fv(point[i]); }
  32. glEnd();
  33. glColor3f(1.0f, 1.0f, 0.0f);
  34. glLineWidth(1.0f);
  35. glBegin(GL_LINE_STRIP);
  36. for (GLint i = 0; i<n; i++){ glVertex3fv(point[i]); }
  37. glEnd();
  38.  
  39. // krzywa uniform
  40. glColor3f(0.0f, 1.0f, 0.0f);
  41. glLineWidth(3.0f);
  42. GLUnurbs *q = gluNewNurbsRenderer();
  43. gluNurbsProperty(q, GLU_DISPLAY_MODE, GLU_OUTLINE_PATCH);
  44. gluNurbsProperty(q, GLU_SAMPLING_METHOD, GLU_PATH_LENGTH);
  45. gluNurbsProperty(q, GLU_SAMPLING_TOLERANCE, 10.0f);
  46. gluBeginCurve(q);
  47. gluNurbsCurve(q, m, knot, 3, &point[0][0], k, GL_MAP1_VERTEX_3);
  48. gluEndCurve(q);
  49. gluDeleteNurbsRenderer(q);
  50.  
  51. glFlush();
  52. }
  53.  
  54. void reshape(int w, int h)
  55. {
  56. GLdouble
  57. xo = -10.0f, x1 = 10.0f, yo = -10.0f, y1 = 10.0f, zo = -1.0f, z1 = 1.0f;
  58. GLdouble q = (GLdouble)w / h; glViewport(0, 0, w, h);
  59. glMatrixMode(GL_PROJECTION);
  60. glLoadIdentity();
  61. if (w <= h)
  62. {
  63. glOrtho(xo, x1, yo / q, y1 / q, zo, z1);
  64. }
  65. else
  66. {
  67. glOrtho(xo*q, x1*q, yo, y1, zo, z1);
  68. }
  69. glMatrixMode(GL_MODELVIEW);
  70. }
  71.  
  72. int main(int argc, char **argv)
  73. {
  74. glutInit(&argc, argv);
  75. glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA | GLUT_DEPTH);
  76. glutInitWindowPosition(0, 0);
  77. glutInitWindowSize(800, 600);
  78. glutCreateWindow("Okno renderowania OpenGL");
  79. //glutKeyboardFunc(asckey);
  80. //glutSpecialFunc(keyboard);
  81. glutReshapeFunc(reshape);
  82. glutDisplayFunc(render);
  83. glutIdleFunc(render);
  84. glutMainLoop();
  85.  
  86. system("PAUSE");
  87. return 0;
  88. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement