Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > разработка игр, графический дизайн и моделирование > Gamedev - cоздание игр: Unity, OpenGL, DirectX
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2010, 14:27   #1
Willer
 
Регистрация: 29.11.2009
Сообщений: 5
Злость проблема с OpenGL

#include <windows.h>
#include <gl/gl.h>
#include <gl/glut.h>

void RenderScene(void)
{

glClear(GL_COLOR_BUFFER_BIT);

glFlush();
}

void SetupRC(void)
{
glClearColor(0,0,1,1);
}


void main(void)
{
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutCreateWindow("OpenGL");
glutDisplayFunc(RenderScene);
SetupRC();
glutMainLoop();
}



при компиляции выдает ошибки:
main.obj : error LNK2001: unresolved external symbol __imp__glFlush@0
main.obj : error LNK2001: unresolved external symbol __imp__glClear@4
main.obj : error LNK2001: unresolved external symbol __imp__glClearColor@16
main.obj : error LNK2001: unresolved external symbol _glutMainLoop@0
main.obj : error LNK2001: unresolved external symbol _glutDisplayFunc@4
main.obj : error LNK2001: unresolved external symbol _glutCreateWindow@4
main.obj : error LNK2001: unresolved external symbol _glutInitDisplayMode@4
Willer вне форума Ответить с цитированием
Старый 30.01.2010, 15:56   #2
ThisIzGame
Форумчанин
 
Регистрация: 31.08.2009
Сообщений: 161
По умолчанию

а библиотеки "OpenGL32.lib GLu32.lib GLaux.lib".
в свой проект вы добавляли?
ThisIzGame вне форума Ответить с цитированием
Старый 30.01.2010, 16:55   #3
Пепел Феникса
Старожил
 
Аватар для Пепел Феникса
 
Регистрация: 28.01.2009
Сообщений: 21,000
По умолчанию

ТС нужен OpenGL32.lib glut.lib
Хорошо поставленный вопрос это уже половина ответа. | Каков вопрос, таков ответ.
Программа делает то что написал программист, а не то что он хотел.
Функции/утилиты ждут в параметрах то что им надо, а не то что вы хотите.
Пепел Феникса вне форума Ответить с цитированием
Старый 30.01.2010, 18:30   #4
Kostia
Участник клуба
 
Аватар для Kostia
 
Регистрация: 21.11.2007
Сообщений: 1,690
По умолчанию

#prangme comment (lib,"opengl32.lib")
#prangme comment (lib,"glu32.lib")
#prangme comment (lib,"glut32.lib")

>>glFlush();
Почитайте об этой функции в msdn, скорее всего она вам там совершенно не нужна. И еще о glFinish() почитайте, может натолкнуть на интересные мысли по оптимизации рендеринга.
Kostia вне форума Ответить с цитированием
Старый 31.01.2010, 00:36   #5
Willer
 
Регистрация: 29.11.2009
Сообщений: 5
По умолчанию

Спасибо огромное всем все работает.
Токо вот ругается теперь на функцию main.
error C2601: 'main' : local function definitions are illegal
#include <windows.h>
#include <gl/gl.h>
#include <gl/glut.h>

GLfloat x1=0; GLfloat y1=0; GLfloat rsize=25;
GLfloat xstep=1; GLfloat ystep=1;
GLfloat windowWidth; GLfloat windowHeight;
void RenderScene(void)
{

glClear(GL_COLOR_BUFFER_BIT);
glColor3f(1,0,0);
glRectf(x1,y1,x1+rsize,y1-rsize);
glutSwapBuffers();
}



void TimeFunction(int volue)
{

if(x1 > windowWidth - rsize || x1 < -windowWidth)
xstep = - xstep;

if(y1 > windowHeight || y1 < windowHeight + rsize)
ystep = - ystep;
x1 += xstep;
y1 += ystep;
if (x1 > (windowWidth - rsize + xstep))
x1= windowWidth -rsize -1;
else if (x1 <-(windowWidth + xstep))
x1 = -windowWidth -1;
if (x1 > (windowHeight + xstep))
x1= windowWidth-1;
else if (x1 <-(windowHeight - rsize + xstep))
x1 = -windowWidth + rsize -1;
glutPostRedisplay();
glutTimerFunc(33,TimeFunction,1);
}

void SetupRC(void)
{
glClearColor(0,0,1,1);
}

void ChangeSize(GLsizei w,GLsizei h)
{
GLfloat aspectratio;
if (h==0)
h = 1;
glViewport(0,0,w,h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
aspectratio = (GLfloat) w / (GLfloat) h;
if (w <= h)
{
windowWidth=100;
windowHeight = 100/aspectratio;
glOrtho(-100,100,-windowHeight, windowHeight, 1, -1);
}
else
{
windowWidth=100 * aspectratio;
windowHeight = 100/aspectratio;
glOrtho(-windowWidth,windowWidth,-100, 100, 1, -1);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}

void main(void)
{
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutCreateWindow("OpenGL");
glutDisplayFunc(RenderScene);
glutReshapeFunc(ChangeSize);
glutTimeFunc(33,TimeFunction,1);
SetupRC();
glutMainLoop();
}
Я не могу понять в чем ошибка?

Последний раз редактировалось Willer; 31.01.2010 в 00:38.
Willer вне форума Ответить с цитированием
Старый 31.01.2010, 14:55   #6
d9m0n
Пользователь
 
Регистрация: 03.03.2009
Сообщений: 29
По умолчанию

у Вас функция ChangeSize не закрыта. (фигурной скобки закрывающей нет)
d9m0n вне форума Ответить с цитированием
Старый 31.01.2010, 23:33   #7
Willer
 
Регистрация: 29.11.2009
Сообщений: 5
По умолчанию

Спасибо большое!!!!!!
Willer вне форума Ответить с цитированием
Старый 01.02.2010, 01:08   #8
Beermonza
Инженер ИС
Старожил
 
Аватар для Beermonza
 
Регистрация: 13.12.2006
Сообщений: 2,671
По умолчанию

Чтобы не искать такие ошибки, применяйте технику лесенки, оператор, следующая строка - отступ 2 пробела, скобка, следующая строка - еще два пробела от скобки:

Код:
void ChangeSize(GLsizei w,GLsizei h)
  {
    GLfloat aspectratio;
    if (h==0)
    h = 1;

    glViewport(0,0,w,h);
    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    aspectratio = (GLfloat) w / (GLfloat) h;

    if (w <= h)
      {
        windowWidth=100;
        windowHeight = 100/aspectratio;
        glOrtho(-100,100,-windowHeight, windowHeight, 1, -1);
      }
    else
      {
        windowWidth=100 * aspectratio;
        windowHeight = 100/aspectratio;
        glOrtho(-windowWidth,windowWidth,-100, 100, 1, -1);
        glMatrixMode(GL_MODELVIEW);
        glLoadIdentity();
      }
  } // - вот она ваша потеря.
...все как на ладони.
Руководитель проекта MMO 2D RPG: Настоящее имя Денис Стрижак (10.05.1981-6.02.2019) Мир духу его
Beermonza вне форума Ответить с цитированием
Старый 02.02.2010, 14:12   #9
anyx
Форумчанин
 
Регистрация: 10.09.2009
Сообщений: 352
Радость

Цитата:
Сообщение от Kostia Посмотреть сообщение
>>glFlush();
Почитайте об этой функции в msdn, скорее всего она вам там совершенно не нужна. И еще о glFinish() почитайте, может натолкнуть на интересные мысли по оптимизации рендеринга.
я не считаю, что она не нужна. это команда OpenGL прекратить расчёты до вызова следующей функции OPenGL {я так понял}
её вызов позволяет произволить расчёты после рендеринга, например, расчёт физики.
anyx вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с движком на OpenGL Granus Мультимедиа в Delphi 11 11.01.2010 15:45
OpenGL: проблема с цветом N!ckeL Общие вопросы Delphi 5 10.01.2010 15:14
OpenGL. Проблема со скоростью передвижения объектов Blade Gamedev - cоздание игр: Unity, OpenGL, DirectX 5 26.10.2009 13:40
Проблема с проектом в OpenGL 30MBU Помощь студентам 4 12.10.2009 14:44
OpenGL проблема с подсчетом FPS AS10 Мультимедиа в Delphi 4 15.09.2009 21:17