Модераторы: Rickert

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> моя первая программа на OpenGL, Помогите - не запускается 
:(
    Опции темы
Altar
Дата 10.5.2006, 22:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 10.7.2005

Репутация: нет
Всего: нет



Пытаюсь вот запустить простенький пример из умной книжки,
но не могу: Компилятор сообщает об ошибке в модуле.H
Может, что старое? Помогите разобраться. Используемые файлы прилагаю.
Код

#include <GL/glut.h>
void myinit(void){

    glClearColor(1.0,1.0,1.0,0.0);
    glColor3f(1.0,0.0,0.0);

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    gluOrtho2D(0.0,500.0,0.0,500.0);
    glMatrixMode(GL_MODELVIEW);

}

void display(void){

    typedef GLfloat point2[2];

    point2 vertices[3]={{0.0,0.0},{250.0,500.0},{500.0,0.0}};

    int i,j,k;
    int rand();
    point2 p = {75.0,50.0};

    glClear(GL_COLOR_BUFFER_BIT);

    for(k=0; k<5000; k++){

        j=rand()%3;

        p[0] = (p[0]+vertices[j][0])/2.0;
        p[1] = (p[1]+vertices[j][1])/2.0;

        glBegin(GL_POINTS);
        glVertex2fv(p);
        glEnd();
    }

    glFlush();
}

void main(int argc, char **argv){

glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition(0,0);
glutCreateWindow("Simple OpenGL example!");
glutDisplayFunc(display);
myinit();
glutMainLoop();

}

 

Присоединённый файл ( Кол-во скачиваний: 9 )
Присоединённый файл  GL.zip 22,42 Kb
PM MAIL   Вверх
Nemesis
Дата 11.5.2006, 00:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 20.2.2005
Где: Москва

Репутация: 1
Всего: 5



Привет! 

Я тут кое-чего подправил, попробуй этот код

Код

#include <GL/glut.h>

void myinit(void);
void display(void);

void main(int argc, char **argv){

glutInit(&argc,argv);
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);
glutInitWindowSize(500,500);
glutInitWindowPosition(0,0);
glutCreateWindow("Simple OpenGL example!");
glutDisplayFunc(display);
myinit();
glutMainLoop();

}

void myinit(void){

    glClearColor(1.0,1.0,1.0,0.0);
    glColor3f(1.0,0.0,0.0);

    glMatrixMode(GL_PROJECTION);
    glLoadIdentity();
    glOrtho(0.0,500.0,0.0,500.0,1,100);
    glMatrixMode(GL_MODELVIEW);
}

void display(void){

    typedef GLfloat point2[2];

    point2 vertices[3]={{0.0,0.0},{250.0,500.0},{500.0,0.0}};

    int i,j,k;
    int rand();
    point2 p = {75.0,50.0};

    glClear(GL_COLOR_BUFFER_BIT);

    for(k=0; k<5000; k++){
        
        j=rand()%3;

        p[0] = (p[0]+vertices[j][0])/2.0;
        p[1] = (p[1]+vertices[j][1])/2.0;

        glBegin(GL_POINTS);
        glVertex2fv(p);
        glEnd();
    }

    glFlush();
}
 
--------------------
PM MAIL   Вверх
Altar
Дата 11.5.2006, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 10.7.2005

Репутация: нет
Всего: нет



Спасибо, но таже таже проблема.

Компилятор переходит на строчку № 1152 в файле gl.h
Код

WINGDIAPI void APIENTRY glAccum (GLenum op, GLfloat value);

И пишет, об ошибках:
Код

[C++ Error] gl.h(1152): E2141 Declaration syntax error
[C++ Error] gl.h(1153): E2238 Multiple declaration for 'WINGDIAPI'
[C++ Error] gl.h(1152): E2344 Earlier declaration of 'WINGDIAPI'
[C++ Error] gl.h(1153): E2141 Declaration syntax error
[C++ Error] gl.h(1154): E2238 Multiple declaration for 'WINGDIAPI'
[C++ Error] gl.h(1153): E2344 Earlier declaration of 'WINGDIAPI'
[C++ Error] gl.h(1154): E2141 Declaration syntax error
[C++ Error] gl.h(1155): E2238 Multiple declaration for 'WINGDIAPI'
[C++ Error] gl.h(1154): E2344 Earlier declaration of 'WINGDIAPI'
[C++ Error] gl.h(1155): E2141 Declaration syntax error
[C++ Error] gl.h(1156): E2238 Multiple declaration for 'WINGDIAPI'
[C++ Error] gl.h(1155): E2344 Earlier declaration of 'WINGDIAPI'
[C++ Error] gl.h(1156): E2141 Declaration syntax error
[C++ Error] gl.h(1157): E2238 Multiple declaration for 'WINGDIAPI'
[C++ Error] gl.h(1156): E2344 Earlier declaration of 'WINGDIAPI'
[C++ Error] gl.h(1157): E2141 Declaration syntax error
[C++ Error] gl.h(1158): E2238 Multiple declaration for 'WINGDIAPI'
[C++ Error] gl.h(1157): E2344 Earlier declaration of 'WINGDIAPI'
[C++ Error] gl.h(1158): E2141 Declaration syntax error
[C++ Error] gl.h(1159): E2238 Multiple declaration for 'WINGDIAPI'
[C++ Error] gl.h(1158): E2344 Earlier declaration of 'WINGDIAPI'
[C++ Error] gl.h(1159): E2141 Declaration syntax error
[C++ Error] gl.h(1160): E2238 Multiple declaration for 'WINGDIAPI'
[C++ Error] gl.h(1159): E2344 Earlier declaration of 'WINGDIAPI'
[C++ Error] gl.h(1160): E2141 Declaration syntax error
[C++ Error] gl.h(1160): E2228 Too many error or warning messages


Что в MS VC++, что в Borland C++ B6 об ошибке сообщается
в томже месте.  smile 
Может у меня используются какие-то не такие файлы из папки GL/.
Пришлите свои пожалуйста у кого всё работает.  

Это сообщение отредактировал(а) Altar - 11.5.2006, 13:36
PM MAIL   Вверх
gepard
Дата 11.5.2006, 16:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 8
Всего: 40



Altar
Перед тем, как подключить gl/gl.h ты должен обязательно подключить <windows.h>
Код

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


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
Altar
Дата 11.5.2006, 16:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 10.7.2005

Репутация: нет
Всего: нет



Именно в этом и ошибка. Спасибо.
Но вот только новые ошибки какие-то:
Код

Build
  [Linker Error] Unresolved external 'glutInit' referenced from D:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\NEWPROGRAM\TEST\1\EXAMPLE.OBJ
  [Linker Error] Unresolved external 'glutInitDisplayMode' referenced from D:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\NEWPROGRAM\TEST\1\EXAMPLE.OBJ
  [Linker Error] Unresolved external 'glutInitWindowSize' referenced from D:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\NEWPROGRAM\TEST\1\EXAMPLE.OBJ
  [Linker Error] Unresolved external 'glutInitWindowPosition' referenced from D:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\NEWPROGRAM\TEST\1\EXAMPLE.OBJ
  [Linker Error] Unresolved external 'glutCreateWindow' referenced from D:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\NEWPROGRAM\TEST\1\EXAMPLE.OBJ
  [Linker Error] Unresolved external 'glutDisplayFunc' referenced from D:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\NEWPROGRAM\TEST\1\EXAMPLE.OBJ
  [Linker Error] Unresolved external 'glutMainLoop' referenced from D:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\NEWPROGRAM\TEST\1\EXAMPLE.OBJ


Я использую С++Builder 6. 

А вот с такими ошибками никогда не сталкивался. smile 

Прошу помочь разобраться. Уверен не уменя одного такой трабл возникал. 

Это сообщение отредактировал(а) Altar - 11.5.2006, 17:28
PM MAIL   Вверх
gepard
Дата 11.5.2006, 17:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 8
Всего: 40



Ошибка линкования - самая злостная ошибка. Но не в твоём случае smile
Ты просто не подключил сами lib библиотек.
Делай как я:
Код

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

#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "glu32.lib")


 


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
Altar
Дата 11.5.2006, 20:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 10.7.2005

Репутация: нет
Всего: нет



Злее просто некуда!
Фрагмент:
Код

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

#pragma comment(lib, "glut.lib")
#pragma comment(lib, "opengl32.lib")
#pragma comment(lib, "glu32.lib")


Всё равно выдаёт ошибку. Но зато коротенькую
На этот раз пишет:[Linker Fatal Error] Fatal: Unable to open file 'GLU32.LIB'
 smile 

В Билдере эти библиотеки находятся не в самой Lib/, а в Lib/Psdk/

Код:
Код

#pragma comment(lib, "Psdk/glut.lib")
#pragma comment(lib, "Psdk/opengl32.lib")
#pragma comment(lib, "Psdk/glu32.lib")


Даёт такой же результат.
А если переместить эти файлы просто в папку Lib/ или в папку проекта,
то предыдущий перечень ошибок снова на лицо.

Может нужно как-то иначе объявить? 
Или подключить эти библиотеки через интерфейс среды Билдера? smile  
PM MAIL   Вверх
gepard
Дата 12.5.2006, 02:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 8
Всего: 40



Цитата(Altar @  11.5.2006,  20:14 Найти цитируемый пост)
Или подключить эти библиотеки через интерфейс среды Билдера?

Да, лучше всего делать так. Я подключаю всегда через исходник, чтобы была независимость.
 


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
Altar
Дата 12.5.2006, 15:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 10.7.2005

Репутация: нет
Всего: нет



Т.е. у тебя Борланд?

Я тут немного подразобрался. Если нажать Project--> Options--> Directories/Conditionals то в строке
library path видно, что по умолчанию папка Psdk не задана, а если поставить, то похоже, что
компилятор находит эти библиотеки, но ошибки опять прежние, как если бы не 
использовать #pragmna coment (...). И ошибки ссылаются именно на функции типа glut...

Так в чём тут дело-то smile  smile 

Если добавлять библиотеки методом add to project, то никакого прока.
Может ещё как-то можно? 
PM MAIL   Вверх
gepard
Дата 12.5.2006, 15:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Участник
Сообщений: 2477
Регистрация: 29.2.2004

Репутация: 8
Всего: 40



Altar
Нет, у меня не Борланд.
Цитата

#pragma comment(lib, "Psdk/glut.lib")

Попробуй указать так:
Код

#pragma comment(lib, "Psdk\\glut.lib")

Я недавно в одном моменте на такую ошибку  усебя натолкнулся. 


--------------------
Когда начинаются цифровые войны, а траффик разносит моё сознание по бесконечным просторам инета, подобно ветру, разносящему листву по полям, тогда и только тогда я чувствую себя свободным!
© Я, Берсерк, что значит - Неистовый. 
PM MAIL WWW ICQ   Вверх
Altar
Дата 12.5.2006, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 10.7.2005

Репутация: нет
Всего: нет



Уже пробывал. Однозначно, что если он не видит библиотеки, то пишет - unable to open ...
А если видит, то опять ругается на функции с началом glut...
Код

[Linker Error] Unresolved external 'glutInit' referenced from D:\PROGRAM FILES\BORLAND\CBUILDER6\PROJECTS\NEWPROGRAM\TEST\1\EXAMPLE.OBJ
и далее пос писку...

Если такие функции убрать, то прога нормально компилируется.

АААА! Что же делать??? Люди с борландом - отзовитесь.


 
PM MAIL   Вверх
Nemesis
Дата 12.5.2006, 21:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 20.2.2005
Где: Москва

Репутация: 1
Всего: 5



Только что собрал прожект под борланд, все работает... вот код:

Код

#include <GL/glut.h>
void myinit(void);    
void display(void);    
void main(int argc, char **argv){    
glutInit(&argc,argv);    
glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB);    
glutInitWindowSize(500,500);    
glutInitWindowPosition(0,0);    
glutCreateWindow("Simple OpenGL example!");    
glutDisplayFunc(display);    
myinit();    
glutMainLoop();    
}
void myinit(void){    
    glClearColor(1.0,1.0,1.0,0.0);
    glColor3f(1.0,0.0,0.0);    
    glMatrixMode(GL_PROJECTION);    
    glLoadIdentity();    
    glOrtho(0.0,500.0,0.0,500.0,1,100);    
    glMatrixMode(GL_MODELVIEW);    
}    
void display(void){    
    typedef GLfloat point2[2];    
    point2 vertices[3]={{0.0,0.0},{250.0,500.0},{500.0,0.0}};    
    int i,j,k;    
    int rand;
    point2 p = {75.0,50.0};    
    glClear(GL_COLOR_BUFFER_BIT);    
    for(k=0; k<5000; k++){    
         
        j=rand%3;
        p[0] = (p[0]+vertices[j][0])/2.0;    
        p[1] = (p[1]+vertices[j][1])/2.0;    
        glBegin(GL_POINTS);    
        glVertex2fv(p);    
        glEnd();    
    }    
    glFlush();    
}



Добавлено @ 21:37 
Ах да, я надеюсь, у тебя имеются все библиотеки 
glut32.lib, glut.lib, glut.dll, glut32.dll, последние 2 можно закинуть в system32, или все 4 просто держать в папке с проектом. 
--------------------
PM MAIL   Вверх
Altar
Дата 12.5.2006, 22:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 10.7.2005

Репутация: нет
Всего: нет



Присоедини пожалуйста свои копии если не трудно. 
PM MAIL   Вверх
Nemesis
Дата 12.5.2006, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 206
Регистрация: 20.2.2005
Где: Москва

Репутация: 1
Всего: 5



Вот архивчик, там то, что я использовал (измени расширение на rar) 

Присоединённый файл ( Кол-во скачиваний: 136 )
Присоединённый файл  Desktop.dat 114,80 Kb
--------------------
PM MAIL   Вверх
Altar
Дата 13.5.2006, 12:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 71
Регистрация: 10.7.2005

Репутация: нет
Всего: нет



Nemesis Огромное тебе человеческое спасибо.
Всё компилируется и работает(попробывал готовые примеры).  smile  smile  smile  smile 
А за одно и с компилятором понятно. Borland рулит и дешевле MS VC++.

 

Это сообщение отредактировал(а) Altar - 13.5.2006, 20:03
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Программирование игр, графики и искуственного интеллекта"
Rickert

НА ЗЛОБУ ДНЯ: Дорогие посетители, прошу обратить внимание что новые темы касающиеся новых вопросов создаются кнопкой "Новая тема" а не "Ответить"! Любые оффтопиковые вопросы, заданные в текущих тематических темах будут удалены а их авторы, при рецедиве, забанены.

  • Литературу, связанную с программированием графики, обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы связанные с программированием графики и мультимедии на языках С++ и Delphi
  • Вопросы по реализации алгоритмов рассматриваются здесь

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Программирование игр, графики и искусственного интеллекта | Следующая тема »


 




[ Время генерации скрипта: 0.0845 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.