Модераторы: Rickert, Alexeis, BorisVorontsov
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Не работает glut.h 
:(
    Опции темы
kurlyak
Дата 12.11.2007, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Добавил в програму хеадеры:
Код

#include <GL/gl.h>
#include <GL/glu.h>
#include <GL/glaux.h>
#include <GL/glut.h>


Прилинковал opengl32.lib glu32.lib glaux.lib glut32.lib.

Код такой:
Код

        GLMmodel* pmodel=NULL;
    pmodel = glmReadOBJ("f-16.obj");
        glmUnitize(pmodel);
        glmFacetNormals(pmodel);
        glmVertexNormals(pmodel, 90.0);
       glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);



А ошибка такая:

BitScrollDlg.cpp
f:\mymfc\2005 myopengl mfc proj\bitscroll\bitscrolldlg.cpp(278) : error C2065: 'GLMmodel' : undeclared identifier
f:\mymfc\2005 myopengl mfc proj\bitscroll\bitscrolldlg.cpp(278) : error C2065: 'pmodel' : undeclared identifier
f:\mymfc\2005 myopengl mfc proj\bitscroll\bitscrolldlg.cpp(279) : error C3861: 'glmReadOBJ': identifier not found
f:\mymfc\2005 myopengl mfc proj\bitscroll\bitscrolldlg.cpp(280) : error C3861: 'glmUnitize': identifier not found
f:\mymfc\2005 myopengl mfc proj\bitscroll\bitscrolldlg.cpp(281) : error C3861: 'glmFacetNormals': identifier not found
f:\mymfc\2005 myopengl mfc proj\bitscroll\bitscrolldlg.cpp(282) : error C3861: 'glmVertexNormals': identifier not found
f:\mymfc\2005 myopengl mfc proj\bitscroll\bitscrolldlg.cpp(283) : error C2065: 'GLM_SMOOTH' : undeclared identifier
f:\mymfc\2005 myopengl mfc proj\bitscroll\bitscrolldlg.cpp(283) : error C2065: 'GLM_MATERIAL' : undeclared identifier
f:\mymfc\2005 myopengl mfc proj\bitscroll\bitscrolldlg.cpp(283) : error C3861: 'glmDraw': identifier not found


Как решить мою проблему? Что  тут надо исправить. Если нужно больше кода- говорите.
PM MAIL   Вверх
Solomon
Дата 12.11.2007, 14:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


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

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



glm??? что то  сомневаюсь что это функции беблиотеки glut... я вообще с расширениями Опена не работал,но что бы функции Glut имели префикс gml это маловероятно.


--------------------
Если не идти до конца к поставленным целям и не пытатся их достигнуть, каким бы тяжелым не казался путь, то лучше и не ставь их перед собой, но тот кто не ставит перед собой труднодоступные цели, никогда не ощутит эйфорию настоящей победы... победы над миром...
Соломон 2008
PM MAIL ICQ GTalk YIM   Вверх
ama_kid
Дата 12.11.2007, 15:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


АСУТП-кодер
***


Профиль
Группа: Комодератор
Сообщений: 1460
Регистрация: 5.3.2007
Где: Москва

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



Цитата(kurlyak @  12.11.2007,  14:37 Найти цитируемый пост)
GLMmodel
Цитата(kurlyak @  12.11.2007,  14:37 Найти цитируемый пост)
glmReadOBJ
Цитата(kurlyak @  12.11.2007,  14:37 Найти цитируемый пост)
glmUnitize
и иже с ними - это вроде как из библиотеки glm.h:
Цитата
GLM library.  Wavefront .obj file format reader/writer/manipulator

попробуй прикрепи к своему проекту еще файл <glm.h> из аттача...

Это сообщение отредактировал(а) ama_kid - 12.11.2007, 15:22

Присоединённый файл ( Кол-во скачиваний: 20 )
Присоединённый файл  glm.rar 14,63 Kb


--------------------
самурай без меча подобен самураю с мечом, но только без меча 
PM MAIL   Вверх
kurlyak
Дата 14.11.2007, 21:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Прикрепил glm.h теперь линкер выдает ошибки:
Linking...
LINK : warning LNK4076: invalid incremental status file '.\Debug/BitScroll.ilk'; linking nonincrementally
BitScrollDlg.obj : error LNK2019: unresolved external symbol "void __cdecl glmDraw(struct _GLMmodel *,unsigned int)" (?glmDraw@@YAXPAU_GLMmodel@@I@Z) referenced in function "public: void __thiscall CBitScrollDlg::DrawScene(void)" (?DrawScene@CBitScrollDlg@@QAEXXZ)
BitScrollDlg.obj : error LNK2019: unresolved external symbol "void __cdecl glmVertexNormals(struct _GLMmodel *,float)" (?glmVertexNormals@@YAXPAU_GLMmodel@@M@Z) referenced in function "public: void __thiscall CBitScrollDlg::DrawScene(void)" (?DrawScene@CBitScrollDlg@@QAEXXZ)
BitScrollDlg.obj : error LNK2019: unresolved external symbol "void __cdecl glmFacetNormals(struct _GLMmodel *)" (?glmFacetNormals@@YAXPAU_GLMmodel@@@Z) referenced in function "public: void __thiscall CBitScrollDlg::DrawScene(void)" (?DrawScene@CBitScrollDlg@@QAEXXZ)
BitScrollDlg.obj : error LNK2019: unresolved external symbol "float __cdecl glmUnitize(struct _GLMmodel *)" (?glmUnitize@@YAMPAU_GLMmodel@@@Z) referenced in function "public: void __thiscall CBitScrollDlg::DrawScene(void)" (?DrawScene@CBitScrollDlg@@QAEXXZ)
BitScrollDlg.obj : error LNK2019: unresolved external symbol "struct _GLMmodel * __cdecl glmReadOBJ(char *)" (?glmReadOBJ@@YAPAU_GLMmodel@@PAD@Z) referenced in function "public: void __thiscall CBitScrollDlg::DrawScene(void)" (?DrawScene@CBitScrollDlg@@QAEXXZ)
.\Debug/BitScroll.exe : fatal error LNK1120: 5 unresolved externals
PM MAIL   Вверх
kurlyak
Дата 15.11.2007, 08:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



В принципе уже сдела- линкер ничего не говорит, ошибок нет, но когда я запускаю программу, окно серенькое блымнет, и все, а дальше идет дамп моего объектного файла с рисунком. что делать?
PM MAIL   Вверх
kurlyak
Дата 15.11.2007, 09:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Вроде исправил все ошибки- изображение самолета есть, но оно белое, бесцветное. То есть фон у меня черный, а самолет весь белый, только очертания его обрисованы и внутри тоже белый. Что делать? Где цвет?
PM MAIL   Вверх
Rickert
Дата 19.11.2007, 08:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ситхи не пройдут!
****


Профиль
Группа: Комодератор
Сообщений: 3356
Регистрация: 11.7.2006
Где: Лакрима

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



kurlyak, а ты текстру накладываешь?


--------------------
Ни что не внушает сна крепче, чем день приисполненный трудов!
PM MAIL WWW Skype GTalk   Вверх
kurlyak
Дата 10.2.2008, 03:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



Нет, текстуры я не накладываю. У меня есть два файла с рисунком, созданные в 3D StudioMax. 
Эти файлы f-16.obj и f-16.mtl. Причем пишу я программу в MFC. Самолет в окне отображаеться 
исключительно белым цветом, одни его очертания, контуры, и залита фигура самолета - тоже белым. весь он короче белый, без раскраски.

Код

void CBitScrollDlg::OnPaint() 
{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glLoadIdentity();    
    
    glTranslatef(0.0f, 0.0f, -7.0f);

    GLMmodel* pmodel = NULL;
    pmodel = glmReadOBJ("f-16.obj");
    glmUnitize(pmodel);
            glmFacetNormals(pmodel);
            glmVertexNormals(pmodel, 90.0);
    glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);

    SwapBuffers(wglGetCurrentDC());    

..........................
}


Добавлено через 2 минуты и 59 секунд
причем я видел как эти файлы рисунка самолета используються в одном примере программы (но не MFC)- все нормально, самолет цветной. но мне нужно под MFC, а там в чистом виде все с нуля написано в примере. кстати там как то glut инициализируеться, окно его создаеться. у меня в MFC уже создано окно OpenGL, разве я не могу вывести в него из файла рисунок как мне нужно?
PM MAIL   Вверх
t_gran
Дата 11.2.2008, 10:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 621
Регистрация: 13.11.2007
Где: г.Усть-Илимск

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



Укажи векторы нормали, а то так и будет просто пятно. smile + указывай диффузию и материю.

Это сообщение отредактировал(а) t_gran - 11.2.2008, 10:51


--------------------
Я знаю, что ничего не знаю© Сократ
user posted image
PM MAIL WWW   Вверх
GLeBaTi
Дата 11.2.2008, 16:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 129
Регистрация: 1.2.2008
Где: г.Чебоксары

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



Я долго думал и наконецто нашел ответ !!!  :

скачиваешь http://home.clara.net/paulyg/download/glut.zip   , заменяешь файлы из архива:
*.h можно все если предложит заменить то лучше не заменять (там скорее всего все будут кроме glut.h) сюда:
C:Program Files BORLAND CBuilder6 Include Gl 
  История про Lib::: 
и суешь *.lib за исключением opengl32.lib (24 кб) сюда
C:Program Files BORLAND CBuilder6 Lib Psdk 
  DDL - в С:\windows\system
Версии Microsoft файлов opengl32.lib, glu32.lib, glut32.lib для Borland C++ не подходят и следует использовать только совместимые версии. Чтобы создать такие версии, надо использовать стандартную программу ‘implib, которая находится в каталоге ..\BorlandC\Bin. Для этого надо выполнить команды вида implib ..\BorlandC\Lib\filename.lib ..\filename.dll для перечисленных файлов, которые создают нужный *.lib файл из соответствующего *.dll файла. Кроме того, надо отметить, что компилятор BorlandC не может по неизвестным причинам использовать файл glaux.lib, входящий в состав BorlandC++5.02, при компиляции приложения, использующего библиотеку GLAUX, поэтому возможно от этой библиотеки придется отказаться. Для создания приложения надо выполнить следующие действия:
Создание проекта: для этого надо выбрать
File->New->Other->Console Wizard, OK.
-> В появившемся окне выбрать Source Type – С++, Console
Application, сбросить опции ‘Use VCL’, ‘Use CLX’, ‘Multi Threaded’.
Нажать ОК.
-> Текст программы можно либо разместить в созданном текстовом
файле, либо удалить его из проекта (Project->Remove From Project)
и добавить файл с расширением *.c или *.cpp в проект (выбрав
Project->Add To Project).
->Сохраните созданный проект в желаемом каталоге (выбрав
File->Save All).
->Подключить к проекту библиотеку GLUT. Для этого надо выбрать
Project->Add To Project и добавить файл glut32.lib
->Для компиляции выбрать Project->Build …, для выполнения –
Run->Run.
-> Когда программа готова, рекомендуется перекомпилировать ее в
режиме ‘Release’ для оптимизации по быстродействию и объему.
Для этого сначала надо выбрать Project->Options->Compiler и
нажать кнопку ‘Release’.
PM MAIL   Вверх
kurlyak
Дата 12.2.2008, 12:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



t_gran - если бы я еще знал что такое векторы нормали!!! но я только по примерам пытаюсь понять как работает OpenGL и еще не все знаю. если можешь объясни. И еще объясни как указать диффузию и материю? я просто не знаю как это выразить в коде.
GLeBaTi - я работаю в Visual Studio 6.0, glut уже скачал и установил по папочкам. к тому же по твоей ссылке пишеться, что файл отсутствует. мне нужно под MFC писать прогу а не под Builder. а вобще конечно спасибо за помощь!
PM MAIL   Вверх
kurlyak
Дата 12.2.2008, 14:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


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

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



о! добавил свет и все получилось!

Код

void CBitScrollDlg::OnPaint() 
{

    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);

    glLoadIdentity();    
    
    glTranslatef(0.0f, 0.0f, -7.0f);

    GLfloat light_position[] = { 1.0, 1.0, 1.0, 0.0 };
    GLfloat light_diffuse[] = {1.0, 1.0, 1.0, 1.0};
    glLightfv(GL_LIGHT0, GL_DIFFUSE, light_diffuse);
    glLightfv(GL_LIGHT0, GL_POSITION, light_position);
    glEnable(GL_LIGHTING);
    glEnable(GL_LIGHT0);

    //glEnable(GL_COLOR_MATERIAL);
    //GLfloat m_matDiffuse[] = {1.0f, 1.0f, 1.0f};
    //glMaterialfv(GL_FRONT_AND_BACK, GL_DIFFUSE, m_matDiffuse);


        GLMmodel* pmodel = NULL;
        pmodel = glmReadOBJ("f-16.obj");
        glmUnitize(pmodel);
                        glmFacetNormals(pmodel);
                        glmVertexNormals(pmodel, 90.0);
        glmDraw(pmodel, GLM_SMOOTH | GLM_MATERIAL);

................

PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Вы можете найти полезным что...
Alexeis
Rickert
  • Английская документация по DirectX лежит где-то здесь.
  • Английская документация по OpenGL лежит где-то там.
  • Гейм-дев у нас обсуждают где-то тут

Ждём вас! С уважением, Alexeis, Rickert.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Мультимедия, OpenGL/DirectX | Следующая тема »


 




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


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

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