Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include "stdafx.h"
- #include <gl/freeglut.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <windows.h>
- const int n = 6;
- GLfloat point[n][3] =
- {
- { 1.40152f, 2.75472f, 0.0f }, { 4.84848f, 8.41509f, 0.0f }, { 4.84848f, 9.4f, 0.0 },
- { 6.21212f, 7.0566f, 0.0f }, { 5.0f, 4.22642f, 0.0f }, { 9.01515f, 1.32075f, 0.0f }
- };
- const GLint k = 3;
- const GLint m = n + k;
- GLfloat knot[m] = { 0.000, 0.000, 0.000, 0.300, 0.500, 0.700, 1.000, 1.000, 1.000 };
- void render(void)
- {
- glClearColor(0.2f, 0.2f, 0.4f, 1.0f);
- glEnable(GL_DEPTH_TEST);
- glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
- glColor3f(1.0f, 0.0f, 0.0f);
- glPointSize(10.0f);
- glBegin(GL_POINTS);
- for (GLint i = 0; i<n; i++){ glVertex3fv(point[i]); }
- glEnd();
- glColor3f(1.0f, 1.0f, 0.0f);
- glLineWidth(1.0f);
- glBegin(GL_LINE_STRIP);
- for (GLint i = 0; i<n; i++){ glVertex3fv(point[i]); }
- glEnd();
- // krzywa uniform
- glColor3f(0.0f, 1.0f, 0.0f);
- glLineWidth(3.0f);
- GLUnurbs *q = gluNewNurbsRenderer();
- gluNurbsProperty(q, GLU_DISPLAY_MODE, GLU_OUTLINE_PATCH);
- gluNurbsProperty(q, GLU_SAMPLING_METHOD, GLU_PATH_LENGTH);
- gluNurbsProperty(q, GLU_SAMPLING_TOLERANCE, 10.0f);
- gluBeginCurve(q);
- gluNurbsCurve(q, m, knot, 3, &point[0][0], k, GL_MAP1_VERTEX_3);
- gluEndCurve(q);
- gluDeleteNurbsRenderer(q);
- glFlush();
- }
- void reshape(int w, int h)
- {
- GLdouble
- xo = -10.0f, x1 = 10.0f, yo = -10.0f, y1 = 10.0f, zo = -1.0f, z1 = 1.0f;
- GLdouble q = (GLdouble)w / h; glViewport(0, 0, w, h);
- glMatrixMode(GL_PROJECTION);
- glLoadIdentity();
- if (w <= h)
- {
- glOrtho(xo, x1, yo / q, y1 / q, zo, z1);
- }
- else
- {
- glOrtho(xo*q, x1*q, yo, y1, zo, z1);
- }
- glMatrixMode(GL_MODELVIEW);
- }
- int main(int argc, char **argv)
- {
- glutInit(&argc, argv);
- glutInitDisplayMode(GLUT_SINGLE | GLUT_RGBA | GLUT_DEPTH);
- glutInitWindowPosition(0, 0);
- glutInitWindowSize(800, 600);
- glutCreateWindow("Okno renderowania OpenGL");
- //glutKeyboardFunc(asckey);
- //glutSpecialFunc(keyboard);
- glutReshapeFunc(reshape);
- glutDisplayFunc(render);
- glutIdleFunc(render);
- glutMainLoop();
- system("PAUSE");
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement