forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   3D-программирование (http://forum.boolean.name/forumdisplay.php?f=108)
-   -   Help:::OpenGl!!! (http://forum.boolean.name/showthread.php?t=5404)

zheland 23.12.2007 18:47

Help:::OpenGl!!!
 
Помогите!!!:SOS:
Где можно найти титоры по программингу на OpenGl!!!

Данил 23.12.2007 18:58

Re: Help:::OpenGl!!!
 
http://pmg.org.ru/nehe/
http://www.rsdn.ru/article/opengl/ogltut2.xml?print
http://opengl.gamedev.ru/doc/

zheland 23.12.2007 19:12

Re: Help:::OpenGl!!!
 
А есть-ли документация к BlitzMax-у?

Данил 23.12.2007 19:31

Re: Help:::OpenGl!!!
 
http://www.boolean.name/showthread.php?t=5190
там есть примеры мною переделанные и обычные

Alex_90 23.12.2007 23:47

Re: Help:::OpenGl!!!
 
Вообще-то с OpenGl лучше работать под C++.:)

dimanche13 24.12.2007 12:15

Re: Help:::OpenGl!!!
 
Цитата:

Сообщение от Alex_90
Вообще-то с OpenGl лучше работать под C++.:)

и чем же лучше? посмотри одну и ту же программу ОГЛ на 3 разных языках Паскаль, С++, БМакс - найди 10 отличий.

Данил 24.12.2007 15:20

Re: Help:::OpenGl!!!
 
Сам принцип, думаю, одинаков. но почему-то мне так кажется (!), что на бм будет все атки медлнее, чем на с++ .(

Fla 25.12.2007 00:28

Re: Help:::OpenGl!!!
 
На BlitzMax будет горазде медленнее, чем на C++, особенно если компилить через gcc с оптимизацией на o3.

HolyDel 25.12.2007 01:05

Re: Help:::OpenGl!!!
 
Fla, поподробнее про компилер и оптимизацию пожалуйста.

dimanche13 25.12.2007 11:48

Re: Help:::OpenGl!!!
 
давайте проведем тест. Оч. интересно будет посмотреть на результаты.

Fla 25.12.2007 15:29

Re: Help:::OpenGl!!!
 
HolyDel, gcc - GNU Compiler Collection. Там и перл и си и ++ и асма. Вообщем почти все что известно, на сегодняшний день. BrainFuck'а и Moo там нету. А оптимизация на o3 - ставит оптимизацию на максимум.

Давайте, только не забывайте, что GCC - линуховый компилер, есть порт под дос\мастдай - DJGCC или как то так.

*Весь рабочей прогарммы на ОГЛе - <10кб

jimon 25.12.2007 17:45

Re: Help:::OpenGl!!!
 
Fla
mingw разве не порт gcc под win ?

haedim 25.12.2007 21:58

Re: Help:::OpenGl!!!
 
сейчас разъясню...

MinGW - Minimalistic GNU for Windows. то есть самые основные программы GNU (GCC, G++, make, ls, cd :)). в-основном используется для компиляции, да.

а вот Cygwin - полноценная GNU/*nix - среда для Windows. то есть с ним возможно создать полноценный Unix в Винде (хотя, ИМХО, лучше отдельный поставить :)).

а вот O3 - дело тонкое. поосторожней с ним. оптимизация, конечно, вещь отличная, но тут важно не перестараться. иногда бывает полезно, иногда - нет. c O3 программа будет весить побольше и иногда может даже быть медленней, чем с O2. O3 советую использовать, если есть inline-функции.

Fla 25.12.2007 22:16

Re: Help:::OpenGl!!!
 
Во - правильно. Лично я юзаю O3 - все прекрасно, проблем нет и работает на ура.

zheland 25.12.2007 23:28

Re: Help:::OpenGl!!!
 
Кто-нибудь поможет с функцией
Код:


glVertex

Я понял что создаётся точка,но как создаются объекты?
(Просто в B3D были точки и треугольники,а тут только точки?)

Вот пример: объяните
Код:

glBegin GL_POLYGON
';Front
glColor3f 1.0,0.0,0.0 '; Red
glVertex3f 0.0, 1.0, 0.0 '; Top Of Triangle (Front)
glColor3f 0.0,1.0,0.0 '; Green
glVertex3f -1.0,-1.0, 1.0 '; Left Of Triangle (Front)
glColor3f 0.0,0.0,1.0 '; Blue
glVertex3f 1.0,-1.0, 1.0 '; Right Of Triangle (Front)
';Right
glColor3f 1.0,0.0,0.0 '; Red
glVertex3f 0.0, 1.0, 0.0 '; Top Of Triangle (Right)
glColor3f 0.0,0.0,1.0 '; Blue
glVertex3f 1.0,-1.0, 1.0 '; Left Of Triangle (Right)
glColor3f 0.0,1.0,0.0 '; Green
glVertex3f 1.0,-1.0, -1.0 '; Right Of Triangle (Right)
';Back
glColor3f 1.0,0.0,0.0 '; Red
glVertex3f 0.0, 1.0, 0.0 '; Top Of Triangle (Back)
glColor3f 0.0,1.0,0.0 '; Green
glVertex3f 1.0,-1.0, -1.0 '; Left Of Triangle (Back)
glColor3f 0.0,0.0,1.0 '; Blue
glVertex3f -1.0,-1.0, -1.0 '; Right Of Triangle (Back)
';Left
glColor3f 1.0,0.0,0.0 '; Red
glVertex3f 0.0, 1.0, 0.0 '; Top Of Triangle (Left)
glColor3f 0.0,0.0,1.0 '; Blue
glVertex3f -1.0,-1.0,-1.0 '; Left Of Triangle (Left)
glColor3f 0.0,1.0,0.0 '; Green
glVertex3f -1.0,-1.0, 1.0 '; Right Of Triangle (Left)
glEnd

А вот ещё:
Код:


glBegin GL_QUADS
glColor3f 0.0,1.0,0.0 '; Set The Color To Blue
glVertex3f 1.0, 1.0,-1.0 '; Top Right Of The Quad (Top)
glVertex3f -1.0, 1.0,-1.0 '; Top Left Of The Quad (Top)
glVertex3f -1.0, 1.0, 1.0 '; Bottom Left Of The Quad (Top)
glVertex3f 1.0, 1.0, 1.0 '; Bottom Right Of The Quad (Top)
glColor3f 1.0,0.5,0.0 '; Set The Color To Orange
glVertex3f 1.0,-1.0, 1.0 '; Top Right Of The Quad (Bottom)
glVertex3f -1.0,-1.0, 1.0 '; Top Left Of The Quad (Bottom)
glVertex3f -1.0,-1.0,-1.0 '; Bottom Left Of The Quad (Bottom)
glVertex3f 1.0,-1.0,-1.0 '; Bottom Right Of The Quad (Bottom)
glColor3f 1.0,0.0,0.0 '; Set The Color To Red
glVertex3f 1.0, 1.0, 1.0 '; Top Right Of The Quad (Front)
glVertex3f -1.0, 1.0, 1.0 '; Top Left Of The Quad (Front)
glVertex3f -1.0,-1.0, 1.0 '; Bottom Left Of The Quad (Front)
glVertex3f 1.0,-1.0, 1.0 '; Bottom Right Of The Quad (Front)
glColor3f 1.0,1.0,0.0 '; Set The Color To Yellow
glVertex3f 1.0,-1.0,-1.0 '; Top Right Of The Quad (Back)
glVertex3f -1.0,-1.0,-1.0 '; Top Left Of The Quad (Back)
glVertex3f -1.0, 1.0,-1.0 '; Bottom Left Of The Quad (Back)
glVertex3f 1.0, 1.0,-1.0 '; Bottom Right Of The Quad (Back)
glColor3f 0.0,0.0,1.0 '; Set The Color To Blue
glVertex3f -1.0, 1.0, 1.0 '; Top Right Of The Quad (Left)
glVertex3f -1.0, 1.0,-1.0 '; Top Left Of The Quad (Left)
glVertex3f -1.0,-1.0,-1.0 '; Bottom Left Of The Quad (Left)
glVertex3f -1.0,-1.0, 1.0 '; Bottom Right Of The Quad (Left)
glColor3f 1.0,0.0,1.0 '; Set The Color To Violet
glVertex3f 1.0, 1.0,-1.0 '; Top Right Of The Quad (Right)
glVertex3f 1.0, 1.0, 1.0 '; Top Left Of The Quad (Right)
glVertex3f 1.0,-1.0, 1.0 '; Bottom Left Of The Quad (Right)
glVertex3f 1.0,-1.0,-1.0 '; Bottom Right Of The Quad (Right)
glEnd


Fla 25.12.2007 23:53

Re: Help:::OpenGl!!!
 
pmg.org.ru/nehe
Это так - почитать на досуге.

glBegin() - начать отрисовку
Параметр один.
GL_TRIANGLES - отрисовывает каждые 3 вертекса как треугольник
GL_POLYGON - отрисовка полигона по заданным вертексам
GL_QUADS - отрисовывает каждые 4 вертекса как четырехугольник
GL_LINES - отрисовывает каждые 2 вертекса как линию
GL_LINE_STRIP - отрисовывает первые 2 вертекса как линию, а дальше линию из 2 вертекса в 3, потом из 3 в 4
GL_LINE_LOOP - тоже самое только на последнем вертексе конец не наступает - рисуется линии до первого вертекса
GL_TRIANGLE_STRIP - тоже самое, что GL_LINE_STRIP но для треугольников. 1-2-3 вертексы, потом 2-3-4 вертексы и тд
GL_TRIANGLE_LOOP - тоже самое что и предыдущее, только если в предыдущем последний треугольник был с вертексами (n-2)-(n-1)-n, то здесь - (n-1)-n-1. Это штукой очень удобно всякие элипсы рисовать.

glEnd() - соответственно закончить отрисовку

HolyDel 26.12.2007 09:27

Re: Help:::OpenGl!!!
 
GL_POLYGON - рисует многоугольник. между glBegin() / glEnd() задаются его вершины.

забыл еще два важных: GL_TRIANGLE_STRIP - создание ленты триугольников
и GL_TRIANGLE_FAN - создание веера триугольников.

Fla 26.12.2007 11:39

Re: Help:::OpenGl!!!
 
Да, точно. Пардон.

*Исправил.

zheland 01.03.2008 20:31

Ответ: Help:::OpenGl!!!
 
У меня проблеммки!:rolleyes:
Код:


SuperStrict
 
Global ScreenWidth:Int=800
Global ScreenHeight:Int=600
Global ScreenDepth:Int=32
 
GLGraphics(ScreenWidth,ScreenHeight,ScreenDepth,0,GL_BACKBUFFER|GL_DEPTHBUFFER)

Жму выполнить и вдруг получаю сообщение...
От: BlitzMax Application
Цитата:

Complite Error
Identifier 'BGL_BACKBUFFER' not found
Коротко: :SOS:

Черный крыс 01.03.2008 21:32

Ответ: Help:::OpenGl!!!
 
Установи бэк-буфер.

забыл название функции....смотри в хелпе по ОГЛ.

dimanche13 01.03.2008 21:37

Ответ: Help:::OpenGl!!!
 
GRAPHICS_BACKBUFFER|GRAPHICS_DEPTHBUFFER

zheland 02.03.2008 13:08

Ответ: Help:::OpenGl!!!
 
Опять проблеммки!:rolleyes:
Код:


SuperStrict
 
Type Z3d_T_vertex
Field name : String
Field tp : Byte
Field wx : Float , wy : Float , wz : Float
Field tx : Int , ty : Int
Field cr : Byte , cg : Byte , cb : Byte , alp : Byte
End Type
 
Function Z3d_F_Create_vertex : Z3d_T_vertex ( )
Local ret : Z3d_T_vertex = New Z3d_T_vertex
Return ret
End Function
 
Type Z3d_T_polygon
Field name : String
Field texture : TPixmap
Field newtxt : Byte
Field tp : Byte
Field list : TList
Method Add_vertex ( vertex : Z3d_T_vertex )
ListAddLast ( list , vertex )
End Method
End Type
 
Function Z3d_F_Create_polygon : Z3d_T_polygon ( )
Local ret : Z3d_T_polygon = New Z3d_T_polygon
Return ret
End Function
 
Global vert : Z3d_T_vertex
Global poly : Z3d_T_polygon
vert = Z3d_F_Create_vertex ( )
vert.tp = 0
poly = Z3d_F_Create_polygon( )
poly.tp = 0
poly.Add_vertex ( vert )

Жму F5 и вдруг получаю сообщение...
От: BlitzMax Application
Цитата:

Unhandled Exception:Attempt to access field or method of Null object
Коротко: :SOS:

jimon 02.03.2008 13:48

Ответ: Help:::OpenGl!!!
 
drunnik
List.AddLast ( list , vertex )

Local ret : Z3d_T_polygon = New Z3d_T_polygon
ret.List = new TList
Return ret

слушай, ты хотя бы научился программировать сначала
а то на настолько тупые вопросы скоро надоест отвечать

zheland 09.04.2008 22:39

Ответ: Help:::OpenGl!!!
 
А можно-ли при окне OpenGl ( GlGraphics ) использовать
графические функции BlitzMax ( как при просто Graphics ),
что-то вроде SetRotation,GetRotation,SetScale И. Т. Д

dimanche13 09.04.2008 22:43

Ответ: Help:::OpenGl!!!
 
а попробовать не судьба? или может религия не позволяет?

zheland 10.04.2008 12:14

Ответ: Help:::OpenGl!!!
 
Я уже
Цитата:

попробовать
- неполучилось : вот и спрашиваю ? можно-ли
Цитата:

использовать
графические функции BlitzMax ( как при просто Graphics ),
что-то вроде SetRotation,GetRotation,SetScale И. Т. Д
какими-нибудь другими способами ( похожие OpenGl функции так хорошо не работают )
{ :@ - недоговорил }

HolyDel 10.04.2008 12:39

Ответ: Help:::OpenGl!!!
 
glRotatef
glScalef
glTranslatef

сначала перемещаем, потом поворачиваем, потом скалим.

zheland 18.04.2008 00:47

Ответ: Help:::OpenGl!!!
 
Что делают ети функции?:
Код:


Function glVertex4dv(v_:Double Ptr)
Function glVertex4fv(v_:Float Ptr)
Function glVertex4iv(v_:Int Ptr)
Function glVertex4sv(v_:Short Ptr)


johnk 18.04.2008 11:12

Ответ: Help:::OpenGl!!!
 
Спроси у хэлпа.

HolyDel 18.04.2008 11:22

Ответ: Help:::OpenGl!!!
 
это значитт что в параметре дается не одно значение - а целый массив.
смотри в сторону glDrawArrays.

zheland 08.05.2008 20:52

Оцените удобность написания кода : please
 
Оцените удобность написания кода:@
(Делаю свой 3D враппер:wallbash: )
Пока начальная стадия разработки
( даже объекты ещё не сделал:@ , но полигоны уже есть ( в версии 1.005 ) ) :

Возможности версии 1.001
Код:

... ' Создание куба из точек
Local vertex : z3dw_glVertex3s [ 8 ]
Local pointsize : z3dw_glPointSize
Local color : z3dw_glColor3ub [ 8 ]
pointsize = z3dw_glPointSize . Create ( 5 )
color [ 0 ]  = z3dw_glColor3ub . Create ( 255 , 255 , 255 )
vertex [ 0 ] = z3dw_glVertex3s . Create ( -1 , -1 , -1 )
color [ 1 ]  = z3dw_glColor3ub . Create ( 255 , 0 , 0 )
vertex [ 1 ] = z3dw_glVertex3s . Create ( 1 , -1 , -1 )
color [ 2 ]  = z3dw_glColor3ub . Create ( 255 , 127 , 0 )
vertex [ 2 ] = z3dw_glVertex3s . Create ( 1 , 1 , -1 )
color [ 3 ]  = z3dw_glColor3ub . Create ( 255 , 255 , 0 )
vertex [ 3 ] = z3dw_glVertex3s . Create ( -1 , 1 , -1 )
color [ 4 ]  = z3dw_glColor3ub . Create ( 0 , 255 , 0 )
vertex [ 4 ] = z3dw_glVertex3s . Create ( -1 , -1 , 1 )
color [ 5 ]  = z3dw_glColor3ub . Create ( 127 , 127 , 255 )
vertex [ 5 ] = z3dw_glVertex3s . Create ( 1 , -1 , 1 )
color [ 6 ]  = z3dw_glColor3ub . Create ( 0 , 0 , 255 )
vertex [ 6 ] = z3dw_glVertex3s . Create ( 1 , 1 , 1 )
color [ 7 ]  = z3dw_glColor3ub . Create ( 255 , 0 , 255 )
vertex [ 7 ] = z3dw_glVertex3s . Create ( -1 , 1 , 1 )
... ' Его вырисовка в главном цикле
pointsize . Draw ( )
glBegin(GL_POINTS)
For n = 0 To 7
color [ n ] . Draw ( )
vertex [ n ] . Draw ( )
Next
glEnd()

Возможности версии 1.005
Код:

... ' создание куба из точек
Local polygon : z3dw_Polygon
polygon = z3dw_Polygon . Create  ( GL_POINTS )
 ' Если заменить например на GL_QUADS будет отображаться 2 цветных квадрата
polygon.Add z3dw_Point1b . Create ( 0 )
polygon.Add z3dw_Color3ub . Create ( 255 , 255 , 255 )
polygon.Add z3dw_Vertex3s . Create ( -1 , -1 , -1 )
polygon.Add z3dw_Point1b . Create ( 1 )
polygon.Add z3dw_Color3ub . Create ( 255 , 0 , 0 )
polygon.Add z3dw_Vertex3s . Create ( 1 , -1 , -1 )
polygon.Add z3dw_Point1b . Create ( 2 )
polygon.Add z3dw_Color3ub . Create ( 255 , 127 , 0 )
polygon.Add z3dw_Vertex3s . Create ( 1 , 1 , -1 )
polygon.Add z3dw_Point1b . Create ( 3 )
polygon.Add z3dw_Color3ub . Create ( 255 , 255 , 0 )
polygon.Add z3dw_Vertex3s . Create ( -1 , 1 , -1 )
polygon.Add z3dw_Point1b . Create ( 4 )
polygon.Add z3dw_Color3ub . Create ( 0 , 255 , 0 )
polygon.Add z3dw_Vertex3s . Create ( -1 , -1 , 1 )
polygon.Add z3dw_Point1b . Create ( 5 )
polygon.Add z3dw_Color3ub . Create ( 127 , 127 , 255 )
polygon.Add z3dw_Vertex3s . Create ( 1 , -1 , 1 )
polygon.Add z3dw_Point1b . Create ( 6 )
polygon.Add z3dw_Color3ub . Create ( 0 , 0 , 255 )
polygon.Add z3dw_Vertex3s . Create ( 1 , 1 , 1 )
polygon.Add z3dw_Point1b . Create ( 7 )
polygon.Add z3dw_Color3ub . Create ( 255 , 0 , 255 )
polygon.Add z3dw_Vertex3s . Create ( -1 , 1 , 1 )
... ' Его вырисовка в главном цикле
glPointSize 5 ' Не успел доделать
polygon.Draw ( )

*Point - метка с помощью которой можно найти нужную точку
*Point - возможные форматы : 1b, 1s, 1i, 1l(long), 1f, 1d, 1str(string)
*1b, 3ub, 3s... — Понятно тем кто знает OpenGl


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

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