|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
01.04.2024, 18:30 | #1 |
Форумчанин
Регистрация: 16.02.2013
Сообщений: 169
|
Не поддерживаются функции OpenGl
В рассматриваемом примере использовалась библиотека GL/glut.h , у меня использовалась библиотека gl/GLU.h.С ней не поддерживаются функции OPENGL,что делать?
Код:
Последний раз редактировалось BDA; 04.04.2024 в 19:24. |
01.04.2024, 19:14 | #2 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,773
|
Если используете виндовые либы, то перед подключайте Windows.h. Но лучше берите инклуды от драйверных сдк.
|
02.04.2024, 19:48 | #3 |
Форумчанин
Регистрация: 16.02.2013
Сообщений: 169
|
Откуда взять библиотеки OpenGL и как их присоединить?
|
02.04.2024, 20:42 | #4 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,773
|
Виндовые есть в винсдк. От производителей драйверов в их сдк.
|
03.04.2024, 17:28 | #5 |
Форумчанин
Регистрация: 16.02.2013
Сообщений: 169
|
Установил OpenGl , все функции поддерживаются.Осталась одна ошибка не поддерживается константа пи.Выдает ошибку , что не поддерживается константа M_PI.Что делать?
#include<math.h> #include<stdio.h> #include<glut.h> #define res 1 #define SW 160*res #define SH 120*res #define SW2 (SW/2) #define SH2 (SH/2) #define pixelScale 4/res #define GLSW (SW*pixelScale) #define GLSH (SH*pixelScale) typedef struct { int fr1, fr2; }time; time T; typedef struct { float cos[360]; float sin[360]; }math; math M; typedef struct { int w, s, a, d; int sl, sr; int m; }keys; keys K; typedef struct { int x, y, z; int a; int l; }player; player P; void pixel(int x, int y, int c) { int rgb[3]; if (c == 0) { rgb[0] = 255; rgb[1] = 255; rgb[2] = 0; } if (c == 1) { rgb[0] = 160; rgb[1] = 160; rgb[2] = 0; } if (c == 2) { rgb[0] = 0; rgb[1] = 255; rgb[2] = 0; } if (c == 3) { rgb[0] = 0; rgb[1] = 160; rgb[2] = 0; } if (c == 4) { rgb[0] = 0; rgb[1] = 255; rgb[2] = 255; } if (c == 5) { rgb[0] = 0; rgb[1] = 160; rgb[2] = 160; } if (c == 6) { rgb[0] = 160; rgb[1] = 100; rgb[2] = 0; } if (c == 7) { rgb[0] = 110; rgb[1] = 50; rgb[2] = 0; } if (c == 8) { rgb[0] = 0; rgb[1] = 60; rgb[2] = 130; } glColor3ub(rgb[0], rgb[1], rgb[2]); glBegin(GL_POINTS); glVertex2i(x * pixelScale + 2, y * pixelScale + 2); glEnd(); } void movePlayer() { if (K.a == 1 && K.m == 0) { P.a -= 4; if (P.a < 0) { P.a += 360; } } if (K.d == 1 && K.m == 0) { P.a += 4; if (P.a > 359) { P.a -= 360; } } int dx = M.sin[P.a] * 10; int dy = M.cos[P.a] * 10; if (K.w == 1 && K.m == 0) { P.x += dx; P.y += dy; } if (K.s == 1 && K.m == 0) { P.x -= dx; P.y -= dy; } if (K.sr == 1) { P.x += dy; P.y -= dx; } if (K.sl == 1) { P.x -= dy; P.y += dx; } if (K.a == 1 && K.m == 1) { P.l -= 1; } if (K.d == 1 && K.m == 1) { P.l += 1; } if (K.w == 1 && K.m == 1) { P.z -= 4; } if (K.s == 1 && K.m == 1) { P.z += 4; } } void clearBackground() { int x, y; for (y = 0; y < SH; y++) { for (x = 0; x < SW; x++) { pixel(x, y, 8); } } } void drawWall(int x1, int x2, int b1, int b2, int t1, int t2) { int x, y; int dyb = b2 - b1; int dyt = t2 - t1; int dx = x2 - x1; if (dx == 0) dx = 1; int xs = x1; if (x1 < 1) { x1 = 1; } if (x2 < 1) { x2 = 1; } if (x1 > SW - 1) { x1 = SW - 1; } if (x2 > SW - 1) { x2 = SW - 1; } for (x = x1; x < x2; x++) { int y1 = dyb * (x - xs + 0.5) / dx + b1; int y2 = dyt * (x - xs + 0.5) / dx + t1; if (y1 < 1) { y1 = 1; } if (y2 < 1) { y2 = 1; } if (y1 > SH - 1) { y1 = SH - 1; } if (y2 > SH - 1) { y2 = SH - 1; } for (y = y1; y < y2; y++) { pixel(x, y, 0); } } } void draw3D() { int wx[4], wy[4], wz[4]; float CS = M.cos[P.a], SN = M.sin[P.a]; int x1 = 40 - P.x; int x2 = 40 - P.x; int y1 = 10 - P.y; int y2 = 290 - P.y; wx[0] = x1 * CS - y1 * SN; wx[1] = x2 * CS - y2 * SN;; wx[2] = wx[0]; wx[3] = wx[1]; wy[0] = y1 * CS + x1 * SN; wy[1] = y2 * CS + x2 * SN; wy[2] = wy[0]; wy[3] = wy[1]; wz[0] = 0 - P.z + ((P.l * wy[0]) / 32.0); wz[1] = 0 - P.z + ((P.l * wy[1]) / 32.0); wz[2] = wz[0] + 40; wz[3] = wz[1] + 40; wx[0] = wx[0] * 200 / wy[0] + SW2; wx[1] = wx[1] * 200 / wy[1] + SW2; wx[2] = wx[2] * 200 / wy[2] + SW2; wx[3] = wx[3] * 200 / wy[3] + SW2; wy[0] = wz[0] * 200 / wy[0] + SH2; wy[1] = wz[1] * 200 / wy[1] + SH2; wy[2] = wz[2] * 200 / wy[2] + SH2; wy[3] = wz[3] * 200 / wy[3] + SH2; drawWall(wx[0], wx[1], wy[0], wy[1], wy[2], wy[3]); } void display() { int x, y; if (T.fr1 - T.fr2 >= 50) { clearBackground(); movePlayer(); draw3D(); T.fr2 = T.fr1; glutSwapBuffers(); glutReshapeWindow(GLSW, GLSH); } T.fr1 = glutGet(GLUT_ELAPSED_TIME); printf(" %i\n", glutGet(GLUT_ELAPSED_TIME) / 1000); glutPostRedisplay(); } void KeysDown(unsigned char key, int x, int y) { if (key == 'w' == 1) { K.w = 1; } if (key == 's' == 1) { K.s = 1; } if (key == 'a' == 1) { K.a = 1; } if (key == 'd' == 1) { K.d = 1; } if (key == 'm' == 1) { K.m = 1; } if (key == ',' == 1) { K.sr = 1; } if (key == '.' == 1) { K.sl = 1; } } void KeysUp(unsigned char key, int x, int y) { if (key == 'w' == 1) { K.w = 0; } if (key == 's' == 1) { K.s = 0; } if (key == 'a' == 1) { K.a = 0; } if (key == 'd' == 1) { K.d = 0; } if (key == 'm' == 1) { K.m = 0; } if (key == ',' == 1) { K.sr = 0; } if (key == '.' == 1) { K.sl = 0; } } void init() { int x; for (x = 0; x < 360; x++) { M.cos[x] = cos(x / 180 * M_PI); M.sin[x] = sin(x / 180 * M_PI); } P.x = 70; P.y = -110; P.z = 20; P.a = 0; P.l = 0; } int main(int argc, char* argv[]) { glutInit(&argc, argv); glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB); glutInitWindowPosition(GLSW / 2, GLSH / 2); glutInitWindowSize(GLSW, GLSH); glutCreateWindow(" "); glPointSize(pixelScale); gluOrtho2D(0, GLSW, 0, GLSH); init(); glutDisplayFunc(display); glutKeyboardFunc(KeysDown); glutKeyboardFunc(KeysUp); glutMainLoop(); return 0; } |
03.04.2024, 17:50 | #6 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,773
|
Код:
|
03.04.2024, 19:23 | #7 |
Форумчанин
Регистрация: 16.02.2013
Сообщений: 169
|
Сделал включение , теперь поддерживает константу.
Но выдается линковская ошибка , что не считывается файл glut32.lib. Я делал следующее , скачал файлы: glut.dll glut.h glut.lib glut32.dll glut32.lib Файлы glut.dll и glut32.dll скачал в папку C:\WINDOWS\SYSWOW64 Файл glut.h в папку Programs Files \Microsoft Visual Studio \...\14.35.32215 в каталог include Файлы glut.lib и glut32.lib в папку ...\14.35.32215 в каталог lib Но у меня в каталоге lib есть еще три папки: onecore x64 x86 Я не знаю , правильно ли я сделал. Почему-то не поддерживается библиотека glut32.lib. Что делать? |
03.04.2024, 20:56 | #8 |
Старожил
Регистрация: 15.02.2010
Сообщений: 15,773
|
Выкинуть glut, который уже лет 20 не поддерживается, или хотя бы заменить на freeglut.
Не захломлять виндовые и компиляторные папки. Определиться под какую разрядность вы компилируете. Проверить настройки проекта и указана ли там либа. |
04.04.2024, 18:18 | #9 |
Форумчанин
Регистрация: 16.02.2013
Сообщений: 169
|
Библиотека glut.h из примера.Установил библиотеки из youtube-овского примера , как установить OpenGL для Visual Studio.В свойствах программного файла установил ссылку на библиотеки opengl32.lib,glut32.lib,glu32.lib.Н е пойму почему не поддерживается glut32.lib?
|
10.04.2024, 19:54 | #10 |
Форумчанин
Регистрация: 16.02.2013
Сообщений: 169
|
Ошибка:пишет не удается открыть файл glut32.lib.Что делать?
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Графика в Delphi средствами OpenGL?? Нужна объяснить функции | artiom4356 | Общие вопросы Delphi | 2 | 01.08.2014 10:23 |
Как и где узнать все функции и процедуры OpenGL(желательно на Delphi) | artiom4356 | Общие вопросы Delphi | 4 | 01.08.2014 10:10 |
Qt+OpenGL. Qt "не видит" функции OpenGL | EnterFix | Qt и кроссплатформенное программирование С/С++ | 4 | 29.01.2013 18:59 |
Использование функции чужого приложения/OpenGL | coNsept | Общие вопросы C/C++ | 7 | 31.12.2010 16:15 |