forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   C++ (http://forum.boolean.name/forumdisplay.php?f=22)
-   -   OpenGL (http://forum.boolean.name/showthread.php?t=356)

pax 23.11.2005 20:30

Оказывается OpenGL не такой уш и сложный (на мой взгляд DirectX сложнее).
Вот ссылка на онлайн книгу по OpenGL:

http://opengl.org.ru/books/open_gl

Я почитал немного и мне понравилось, посмотрим что будет дальше :)

Жека 25.11.2005 12:24

Если на то пошло, то вот ссылка на переведённые уроки NeHe: перейти

на этой же странице в самом низу есть ссылка на перевод книги по ОпенГЛ: перейти

jimon 25.11.2005 22:12

я лично недумаю что 3д программирование на языках высокого уровня следует начинать с нуля... даже с примеров

всештаки 3д двиг ето сложное API как никрути
и кучу алгоритмов реализовывать ето тоже проблемма
и еще совместимость,утечки памяти, проблеммы с драйверами... проблеммы...

лутче присмотри какой нибудь 3д opensource двиг с потдержкой рендера на opengl

и переделай его под свои нужды

pax 26.11.2005 00:12

Цитата:

Originally posted by Жека@Nov 25 2005, 12:24 PM
Если на то пошло, то вот ссылка на переведённые уроки NeHe: перейти

на этой же странице в самом низу есть ссылка на перевод книги по ОпенГЛ: перейти

Огромное спасибо за ссылку на переведенную книгу. :super:

Вот тут еще много ссылок на ресурсы по OpenGL:

http://steps3d.narod.ru/links.html

2jimon А мне хочется узнать, как это все устроено :) :) :) , тем более, что потом для какой-нить маленькой игрухи можно свой двиг написать ;)

jimon 26.11.2005 14:55

ето для арканоида или примитивных шароварок можно еще писать свой двиг

а на разработку нормального 3д двига уйдет года 4

pax 26.11.2005 19:10

Цитата:

Originally posted by jimon@Nov 26 2005, 02:55 PM
ето для арканоида или примитивных шароварок можно еще писать свой двиг

а на разработку нормального 3д двига уйдет года 4

Я не тороплюсь ;)

pax 26.11.2005 22:29

Вот ссылка на учебно-методическое пособие по OpenGL:

http://graphics.cs.msu.ru/courses/cg03b/as...ds/tutorial.zip

:) :) :)

alcosholik 27.11.2005 13:58

Фигасе! Респект Московскому Государственному университету им. Ломоносова. :) На пальцах рассказано о всех основных принципах OpenGL. :super:

jimon 27.11.2005 16:04

учитывая кучу инфы по Opengl... (особенно куча инфы о шейдерах)
и учитывая то что из irrlicht можно работать напрямую с opengl (хотя ирлихт потдерживает и d3d и opengl)

то получается круто :)

pax 27.11.2005 16:28

Цитата:

Originally posted by alcoSHoLiK@Nov 27 2005, 01:58 PM
Фигасе! Респект Московскому Государственному университету им. Ломоносова. :) На пальцах рассказано о всех основных принципах OpenGL. :super:
Я наткнулся на это МУ случайно :) , сам не ожидал :rolleyes:

pax 30.11.2005 00:02

2Жека: учебник, на который ты дал ссылку, просто рулеzzz :super: :super: :super:

pax 26.12.2005 00:28

Электронная версия русского издания "библии" программистов, работающих с OpenGL - "красной книги", официального мануала. Около 500 страниц формата А4...

Красная книга

книга в DOC формате

:)

alcosholik 26.12.2005 03:19

А версия какая?

jimon 26.12.2005 13:36

у кого есть заголовки ? а лутче справка по OpenGL 2 :)

Гость alcoSHoLiK 26.12.2005 21:50

jimon
http://www.opengl.org/documentation/opengl...nt_version.html

jimon 27.12.2005 14:40

спасибо

pax 27.12.2005 22:38

Цитата:

А версия какая?
По мойму тоже самое что и онлайн учебник, на который Жека ссылку давал...

Conan Fedr 16.02.2006 00:52

Вложений: 4
Вот дам вам пару учебников из своей коллекции :) очень хороший народный учебник по OpenGL ну и еще один неплохой .

Magus 22.02.2006 00:40

Объясните кто-нибудь дураку поподробнее, как загружать вмодели из 3дмакса(желательно с примером).

pax 22.02.2006 01:56

Вложений: 2
Сам я не пробовал ниче отсюда, и не разбирал, но может вам поможет...

pax 22.02.2006 02:06

Вот тут еще гляньте:
http://morgeyz.elayne.ru/elaynemdl.rar
там 3 формата вроде
3ds, asc, md2

pax 16.06.2006 22:57

Вот статья с подробным описанием формата MD2, его загрузки и рендеринга c использованием OpenGL, также там есть исходники загрузчика.

http://tfc.duke.free.fr/old/models/md2.htm

А вот для формата MD2 спецификация:

http://tfc.duke.free.fr/coding/md2-specs-en.html

Вот описание формата (спецификация) и загрузчик формата MDL:

http://tfc.duke.free.fr/coding/mdl-specs-en.html

Вот описание формата (спецификация) и загрузчик формата MD5:
http://tfc.duke.free.fr/coding/md5-specs-en.html


PS: все это можно найти здесь: http://tfc.duke.free.fr/

pax 18.06.2006 12:32

Вопрос тем, кто работал с OpenGL:

Что быстрее визуализируется - дисплейные списки или массивы вершин с текстурными координатами и нормалями с большим кол-вом примитивов (GL_TRIANGLES, GL_QUADS и т.д.)?

pax 20.06.2006 12:47

Вот написал три теста "рисования" большой плоскости из GL_QUADS 150*150 т.е. 22500 квадов или 45000 треугольников с различными техниками отображения:

1. Array.exe - создается простой массив вершин (Ground) и рисуется следующим образом:

Код:

glInterleavedArrays(GL_T2F_N3F_V3F, 0, Ground);
        glDrawArrays(GL_QUADS, 0, fwidth*fheight*4);

2. ArrayInDisplayList.exe - тож самое, что и первый вариант, только массив помещается в дисплейный список:


Код:

flist=glGenLists(1);
        glNewList(flist,GL_COMPILE);

        glInterleavedArrays(GL_T2F_N3F_V3F, 0, Ground);
        glDrawArrays(GL_QUADS, 0, fwidth*fheight*4);
        glEndList()

        ...


        glCallList(flist);

3. DisplayList.exe - дисплейный список заполняется и рисуется следующим образом:

Код:

int t[2];
        int v[3];

        flist=glGenLists(1);
        glNewList(flist,GL_COMPILE);

                for (int i=0; i<fwidth; i++)
                {
                        for (int j=0; j<fheight; j++)
                        {
                                glBegin(GL_QUADS);
                                        glNormal3i(0, 1, 0);
                                                t[0]=0; t[1]=0; v[0]=i; v[1]=0; v[2]=j;
                                        glTexCoord2iv(t); glVertex3iv(  v );
                                                t[0]=0; t[1]=1; v[0]=i; v[1]=0; v[2]=j+1;
                                        glTexCoord2iv(t); glVertex3iv(  v );
                                                t[0]=1; t[1]=1; v[0]=i+1; v[1]=0; v[2]=j+1;
                                        glTexCoord2iv(t); glVertex3iv(  v );
                                                t[0]=1; t[1]=0; v[0]=i+1; v[1]=0; v[2]=j;
                                        glTexCoord2iv(t); glVertex3iv(  v );
                                glEnd();
                        }
                }
        glEndList();

        ...
       
        glCallList(flist);

Потестите пожалуйста... У меня странные результаты:
первые два варианта ведут себя одинаково (FPS 122 - 164 соответственно когда все видно и когда не видно ничего), а вот третий... вообще должно быть медленнее, а выходит что OpenGL как-то сам включает алгоритм определения видимости треугольников и когда на экраене ниче нет FPS выростает до 584, а когда видно поле результат такой же как и в первых двух случаях (FPS около 128 )


PS: Особо интересно как это будет работать на ATI карточках...

PS2: Мой комп: Cel D 2.4GHz/512 MB Dual/64MB GF4 MX440

tormoz 20.06.2006 18:04

Для такой машины тест не впечатляет.
Блитц быстрее работает

jimon 20.06.2006 18:22

что то ты криво зделал...
тут или culling или что то тормозит :) или надо юзать VBO... или хз
[offtop] попробуй вот че
glEnable(GL_NO_BUGS);
glEnable(GL_AUTO_GENERATE_ENGINE);
glEnable(GL_AUTO_CREATE_MODEL);
glEnable(GL_MINIMIZE_FPS_TO_10000);
glEnable(GL_EMULATE_NV120000_WITH_NO_BRAKES);
glEnable(GL_WARP_ME_TO_JONH_CARMACK);

взято из мега ацки серкетного топика на гд
[offtop]

pax 20.06.2006 19:12

Цитата:

Сообщение от tormoz
Для такой машины тест не впечатляет.
Блитц быстрее работает

Хочешь сказать блитц выдаст на много больше 120 FPS при рендеринге 45000 треугольников? Тем более что я не использовал ни одного расширения OpenGL типа VBO.

PS: Хоть бы результаты оставил...

PS2: Я только учусь ;-)

2jimon: обязательно попробую :)

pax 21.06.2006 02:13

Вот хороший ресурс по OpenGL на русском языке:
http://steps3d.animekazan.net/

tormoz 21.06.2006 05:29

45 000 на моем компе 250 фпс.

твои тесты:
1 35 фпс
2-3 скачет от 2000 до 100. фиг поймешь, слишком быстро камера крутицца.

pax 21.06.2006 16:40

Цитата:

Сообщение от tormoz
45 000 на моем компе 250 фпс.

а машина у тебя какая?

tormoz 21.06.2006 21:37

атлон 1900+
512 рам
видео жефорс 6600 гт 128

jimon 22.06.2006 12:08

tormoz +1 :)
конфиругация совершено другая
все тесты кроме последнего стабильно - 200 фпс
последний при показе графики 200 фпс, без тех кубиков - 800 фпс

geforce 4 mx 440 128mb :))) не далеко ушол

Forger 18.01.2007 18:21

Re: OpenGL
 
http://nehe.gamedev.net/

Содержит хорошие примеры и туториалы по OGL

pax 15.02.2007 21:06

Re: OpenGL
 
газине, который торгует старыми книгами... размером книга была больше чем любая моя, так вот, эта книжка по OpenGL на русском, причем все подробно описано... сейчас начну качать на своем далапе...
http://pmg.org.ru/ebooks/Piter%20-%2...graf iki.djvu

alcoSHoLiK 15.02.2007 22:30

Мегакнига. Но закачка прервалась(

Скрытый текст (вы должны войти под своим логином или зарегистрироваться и иметь 5 сообщение(ий)):
У вас нет прав, чтобы видеть скрытый текст, содержащийся здесь.

magpro 26.11.2007 00:59

Re: OpenGL
 
Вот вопрос. Возможно глуаый но всё же

Эти учебники пойдут для OpenGL Performer?

У меня какието там ошибки летят(



Compiling...
onne.cpp
d:\program files\microsoftvisualstudio\vc98\include\gl\gl.h(1 152) : error C2144: syntax error : missing ';' before type 'void'
d:\program files\microsoftvisualstudio\vc98\include\gl\gl.h(1 152) : error C2501: 'WINGDIAPI' : missing storage-class or type specifiers
d:\program files\microsoftvisualstudio\vc98\include\gl\gl.h(1 152) : fatal error C1004: unexpected end of file found
Error executing cl.exe.

onne.obj - 3 error(s), 0 warning(s)



Вот такая вот ерунда.
как я понял проблема с
WINGDIAPI но как устронить эту проблему?


HolyDel 25.04.2008 18:21

Ответ: OpenGL
 
вот онлайн справочник по основным командам OpenGL. очень удобный.
http://opengl.gamedev.ru/doc/

Morganolla 12.02.2009 12:52

Ответ: OpenGL
 
Щас изучаю ОпенГЛ... Знатоки, подскажите - окружность можно рисовать тока через квадрик-диск, или еще как-то попроще?

HolyDel 12.02.2009 13:15

Ответ: OpenGL
 
если ты пишешь игру, то я советую вообще отказаться от кваратик функций.

окружность очень легко нарисовать вручную, через TRIANGLES_FAN

кстати, окружность 2д или в 3д?

Morganolla 12.02.2009 13:38

Ответ: OpenGL
 
Да, для игр, важно быстродействие!
А точки для TRIANGLES_FAN, расчитывать в ручную? :( Мрак...
А прямой ф-ии для круга нет получается? :(
Окружность пока 2Д!
Спасибо.

HolyDel 12.02.2009 14:27

Ответ: OpenGL
 
Morganolla
чего мрак то?
можешь скачать мой двиг и посмотреть ф-ию Circle в файле 2DPrim.cpp http://rghost.ru/111131

или подождать вечер, тогда я смогу запостить сюда код.

Morganolla 12.02.2009 17:49

Ответ: OpenGL
 
Файл не скачивается...

HolyDel 12.02.2009 20:28

Ответ: OpenGL
 
Код:

void Oval(int x,int y,int radius)
{
        if(radius<0)return;

        float iter = (sqrtf((float)radius * 0.5f) + 2);

        float a = 0;
        float da = 3.1415f / iter;
        float vsin,vcos;

        glBegin(GL_TRIANGLE_FAN);
        while(a<2*3.1415f)
        {
                sgSinCos(a,vsin,vcos);
                glVertex2f(x + vsin * radius,
                        y + vcos * radius);
                a+=da;
        }
        glEnd();
}

Код:

__forceinline void sgSinCos(float Angle,float & SinValue,float & CosValue )
{
        __asm
        {
                fld Angle;
                fsincos;
                mov eax,[CosValue];
                fstp [eax];
                mov eax,[SinValue];
                fstp [eax];
        }
}


Morganolla 13.02.2009 01:38

Ответ: OpenGL
 
Гениально! А ты хочешь написать двиг., чтобы был лучше других (ОГР и ИРЛИХТ)? или еще зачем?

HolyDel 13.02.2009 01:41

Ответ: OpenGL
 
для опыта.

-=Jack=- 23.07.2009 23:40

Ответ: OpenGL
 
Скажите, существует ли хоть одна книга по OpenGL, в которой не используется GLUT??

jimon 23.07.2009 23:46

Ответ: OpenGL
 
-=Jack=-
ну GLUT используется только для инициализации, делай её ручками (создавать окно, создавать контекст opengl)
примеров минимального opengl приложения без GLUT полно

а обработка нажатий клавиш, мышки и тд - это к opengl никак не относится

-=Jack=- 24.07.2009 01:06

Ответ: OpenGL
 
Ясно,буду пробовать... А исходники GLUT не открыты?

jimon 24.07.2009 01:11

Ответ: OpenGL
 
-=Jack=-
вот исходники GLUT
http://www.opengl.org/resources/libr...lut/glut37.zip (3.6 mb), но не думаю что они тебе сильно помогут

-=Jack=- 24.07.2009 02:01

Ответ: OpenGL
 
Спасибо :super:

jimon 31.07.2009 10:57

Ответ: OpenGL
 
есть одна очень интересная особенность которая прошла мимо моих глаз
в общем до OpenGL 1.5 были только asm-подобные шейдера, в 1.5 версии представили 1.00 версию GLSL, но у меня тут лежит комп. с 945G чипсетом, он держит только 1.4 версию OpenGL, что делать ?
да и мой двиг поддерживает только 1.20,1.30 и 1.40 версии GLSL

оказывается выход есть !
Cg это универсальный шейдерный язык nvidia которая предоставляет компилятор Cg в HLSL,GLSL,ARB shaders
и тут открывается интересная особеность, компилятор Cg может компилировать GLSL в ARB shaders !

конечно прийдется дописать поддержку этих ARB Shaders в движке, но сам факт наличия такой возможности очень радует
в идеале надо вообще все шейдера писать на Cg и не мучать себе мозг, так можно будет отвязать media от GAPI и не мучатся :)

Morganolla 15.01.2010 01:38

Ответ: OpenGL
 
А что лучше использовать для обучения GLUT или GLAUX? Полно учебников как на том так и на этом...

ffinder 15.01.2010 01:55

Ответ: OpenGL
 
Цитата:

Сообщение от Morganolla (Сообщение 133536)
А что лучше использовать для обучения GLUT или GLAUX? Полно учебников как на том так и на этом...

а эти либы для разных вещей.

в glaux.h - дополнительные команды, типа квадрики (счас уже не помню)
а glut (GL utility toolkit) - просто библиотека функций для быстрого прототипирования (инициализация окон, контекстные менюшки и т.д.) написанная мегоGLгуру Марком Килгардом (раньше работал в SGI).

В серьезных программах не нужно ни то, ни другое. Но для старта - почему бы и нет:super:

Morganolla 13.06.2010 03:05

Ответ: OpenGL
 
Что-то у меня интересный баг объявился. В 27 уроке от нехе для VC.NET перестали работать тени!!! Они переработали текст проекта и теней теперь нету. Если кому не в тягость проверьте у себя на компе?

Morganolla 07.09.2010 22:31

Ответ: OpenGL
 
Любопытная статейка за 2008 год - OpenGL 3 против DirectX 11: война закончена
http://www.thg.ru/graphic/open_gl_3_..._11/index.html

Nikich 14.07.2013 01:07

Ответ: OpenGL
 
Можете подсказать, в чем может быть проблема?
Работаю с данным обучением и Code::Blocks. Создавал и openGL проект, и glut проект - все тщетно, получаю миллионы ошибок "undefined reference to ...".
Ссылка на репозиторий обучения https://github.com/jckarter/ch4-flag

den 14.07.2013 01:18

Ответ: OpenGL
 
Проверь зависимости, должно быть GL и GLUT (и может быть ещё GLU, не помню точно).
Щас блокса под рукой нет, но по памяти: какой-то пункт в верхнем меню -> build options (выбрать и дебаг и рилэйс) -> link library.

Если не поможет, то покажи ошибки полностью.

Nikich 14.07.2013 01:41

Ответ: OpenGL
 
В openGL проекте
Код:

glBindBuffer(GL_ARRAY_BUFFER, mesh->vertex_buffer);
undefined reference to _imp____glewBlindBuffer

И таких однотипных ошибок уйма, почти на каждую строчку

Взялся именно за этот пример только из-за относительной свежести создания. Классика от NeHe - дело, конечно, хорошее, но уж довольно таки старое.

И стоит ли вообще использовать Code::Blocks? В нем привлекает маленький вес и удобность, однако почти во всех обученных люди используют VS.

HolyDel 14.07.2013 04:14

Ответ: OpenGL
 
Код:

Nikich
это расширения. их надо инициализировать вручную.
через wglGetProcAddress("glBindBuffer).
ну и переменную объявить типа
Код:

extern PFNGLBINDBUFFERPROC    glBindBuffer;
в h-ке.

после инициализации окна
Код:

glBindBuffer = wglGetProcAddress("glBindBuffer)
и так с КАЖДОЙ функцией расширения.

Nikich 14.07.2013 11:23

Ответ: OpenGL
 
Это же не мой код, а код автора статьи. Поскольку у него всё работает, вероятно, дело не в коде, а настройках компилятора.

HolyDel 14.07.2013 14:13

Ответ: OpenGL
 
а, точно, у него же glew.
значит не подключена glew.

Nikich 14.07.2013 15:21

Ответ: OpenGL
 
Нашел еще один годный сайт www.opengl-tutorial.org/beginners-tutorials/
Следуя инструкции удалось скомпилировать все части в VS. Однако, о создании своего проекта сказано крайне мало. Можно ли подключить все нужные библиотеки не прибегая к CMake?

HolyDel 14.07.2013 16:04

Ответ: OpenGL
 
дополнительные библиотеки можно подключать через linker/input, или через #pragma, прямо в коде, типа:
Код:

#pragma comment(lib,"opengl32.lib")
вот есть годные по форвард контексту на русском:
https://code.google.com/p/gl33lessons/wiki/Lesson01
из плюсов - намного меньше зависимостей.
я у себя в движке все библиотеки подключал черезе код. т.е. не либки, а прямо исходники библиотек засовывал в движок. собирается дольше, зато без проблем с любыми флагами компилятора.

Nikich 14.07.2013 23:28

Ответ: OpenGL
 
Цитата:

Сообщение от HolyDel (Сообщение 263408)
дополнительные библиотеки можно подключать через linker/input, или через #pragma, прямо в коде, типа:
Код:

#pragma comment(lib,"opengl32.lib")
вот есть годные по форвард контексту на русском:
https://code.google.com/p/gl33lessons/wiki/Lesson01
из плюсов - намного меньше зависимостей.
я у себя в движке все библиотеки подключал черезе код. т.е. не либки, а прямо исходники библиотек засовывал в движок. собирается дольше, зато без проблем с любыми флагами компилятора.

Черт, данные уроки не получается скомпилировать в VS2010. Как можно узнать, какие используются библиотеки? Автор об этом умолчал, а без них собрать проект вручную не выходит.


Часовой пояс GMT +4, время: 09:40.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot