OpenGL - всё связанное с ним.
Участников: 4
Страница 1 из 2
Страница 1 из 2 • 1, 2
OpenGL - всё связанное с ним.
Всё известное об OpenGL выкладывайте пожалуста сюда. (особенно меня интересуют построение кода и команды)
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 30
Откуда : Москва
Re: OpenGL - всё связанное с ним.
Книжка есть такая, называется NeHe (незнаю правда че ето означает), свободная, написанная небольшим сообществом, по ней я и учился, скатать мона тут, правда написана помоему она под Си-шку, (для понимания основ пойдет), зато в папке екзамплов ФриБейсика в разделе GL лежат все исходники из этой книжки, для кажной главы свой, поэтому я думаю особых трудностей с освоением тут возникнуть не должно, а если будут, спрашивай, подскажем
Re: OpenGL - всё связанное с ним.
Вот только что смотрю я на вращающийся кубик, сделанный с помощью ОпенГЛ - так вот нашёл я серьёзную недоделку. (если это можно так назвать) Дело в том, что при прорисовке кубика и треугольника рисуются подряд всё грани, хотя нужно максимум три (остальные не видны). Я, в своём прошлом движке, сделал маленькую деталь, которая позволяет существенно выиграть в производительносте. Смысл:
У каждой текстуры указывается "лицевая" сторона в виде 2-х координат.
Если камера ближе к точке чем к текстуре(середине), то текстура прорисовывается, если же нет, то текстура не рисуется.
У каждой текстуры указывается "лицевая" сторона в виде 2-х координат.
Если камера ближе к точке чем к текстуре(середине), то текстура прорисовывается, если же нет, то текстура не рисуется.
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 30
Откуда : Москва
Re: OpenGL - всё связанное с ним.
Вот тут то какраз и есть прелесть OpenGL-а, прикол в том, что он не отрисовывает невидимые полигоны, позволяя не заморачиваться на счет етого разработчику, а расчет положения вертексов особо комп не напрягают
Re: OpenGL - всё связанное с ним.
Вот я бы хотел спросить: у меня идут игры написанные под опенжл(нормально), однако есть но: при запуске программ написанных на фрибарсике они заметно подтормаживают. Это из-за свойств самого языка?(именно поэтому я хочу писать 3д движок с помощью директикс)
Кстати я придумал:
"Если камера ближе к точке чем к текстуре(середине), то текстура прорисовывается, если же нет, то текстура не рисуется." - лучше наоборот: в середине модели точкаи если она дальше сердины, то прорисовка.(так легче направление будет указывать)
Кстати я придумал:
"Если камера ближе к точке чем к текстуре(середине), то текстура прорисовывается, если же нет, то текстура не рисуется." - лучше наоборот: в середине модели точкаи если она дальше сердины, то прорисовка.(так легче направление будет указывать)
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 30
Откуда : Москва
Re: OpenGL - всё связанное с ним.
язык тут непричем, все его команды транслируются в ассемблеровские команды, после компилятся чистым ассемблером, следовательно производительность получается соответствющая. На счет тормознутости ОпенГЛ-а у мня тоже большие сомнения, тк сам знаю, под Линуксом есть программка Wine, которая позволяет запускать виндовые приложения (и игрушки в часности), при этом в Линуксе нет Директикса, и все его функции подменяются на аналогичные ОпенГЛ-овские, при этом в некоторых игрушках я наблюдаю значительный прирос ФПС. Так что я думаю проблема просто в неправильном использовании библиотеки
Re: OpenGL - всё связанное с ним.
Простейший вопрос:
Как инициализировать окошко жл-овское окошко?
Просто у меня такая прога и не знаю что делать.
Как инициализировать окошко жл-овское окошко?
Просто у меня такая прога и не знаю что делать.
- Код:
#Include "G:\Gosha\FreeBASIC\inc\GL\gl.bi"
glViewport 0, 0, 640, 480
glClearColor 0.0, 0.0, 0.0, 1.0
glBegin GL_QUADS
glVertex3f -0.5, -0.5, 0.0
glVertex3f -0.5, 0.5, 0.0
glVertex3f 0.5, 0.5, 0.0
glVertex3f 0.5, -0.5, 0.0
glEnd
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 30
Откуда : Москва
Re: OpenGL - всё связанное с ним.
- Код:
#include once "gl/gl.bi"
#include once "gl/glu.bi"
screen 18, 16, , 2
'' ReSizeGLScene
glViewport 0, 0, 640, 480 '' Reset The Current Viewport
glMatrixMode GL_PROJECTION '' Select The Projection Matrix
glLoadIdentity '' Reset The Projection Matrix
gluPerspective 45.0, 640.0/480.0, 0.1, 100.0 '' Calculate The Aspect Ratio Of The Window
glMatrixMode GL_MODELVIEW '' Select The Modelview Matrix
glLoadIdentity '' Reset The Modelview Matrix
'' All Setup For OpenGL Goes Here
glShadeModel GL_SMOOTH '' Enable Smooth Shading
glClearColor 0.0, 0.0, 0.0, 0.5 '' Black Background
glClearDepth 1.0 '' Depth Buffer Setup
glEnable GL_DEPTH_TEST '' Enables Depth Testing
glDepthFunc GL_LEQUAL '' The Type Of Depth Testing To Do
glHint GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST '' Really Nice Perspective Calculations
glClear GL_COLOR_BUFFER_BIT OR GL_DEPTH_BUFFER_BIT '' Clear Screen And Depth Buffer
glLoadIdentity '' Reset The Current Modelview Matrix
glTranslatef 0.0, 0.0, -10 '' Move Left 1.5 Units And Into The Screen 6.0
glBegin GL_QUADS
glVertex3f -0.5, -0.5, 0.0
glVertex3f -0.5, 0.5, 0.0
glVertex3f 0.5, 0.5, 0.0
glVertex3f 0.5, -0.5, 0.0
glEnd
flip
sleep
Re: OpenGL - всё связанное с ним.
Не работает
(точнее выполняется и зависает. комп у меня хорший, опенжл поддерживает и современный => это из-за программы)
(точнее выполняется и зависает. комп у меня хорший, опенжл поддерживает и современный => это из-за программы)
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 30
Откуда : Москва
Re: OpenGL - всё связанное с ним.
=> операционная система плохаяНе работает
(точнее выполняется и зависает. комп у меня хорший, опенжл поддерживает и современный => это из-за программы)
прога по идее должна ожидать нажатия любой клавиши, можно ради эксперимента после sleep поставить 5, тогда прога сама должна завершиться через 5 сек
Полезные ссылки на OpenGL
Вот несколько интересных ссылок на тему OpenGL:
Раздел известного портала о создании игр посвященный OpenGL: http://opengl.gamedev.ru/
Сайт по магии (и не только по OpenGL) http://pmg.org.ru/index.html
Подборка книг по OpenGL и DirectX: http://torrents.ru/forum/viewtopic.php?t=952051
Хорошее руководство по OpenGL и FreeBasic, жаль что на немецком http://other.paul-grunewald.de/ogl/index.html Это подобие Красной книги OpenGL с примерами на ФБ, весьма полезна.
И наконец сама OpenGL Red Book: http://narod.ru/disk/4738790000/OpenGL%20Red%20Book.pdf.html
Думаю, пригодится
Раздел известного портала о создании игр посвященный OpenGL: http://opengl.gamedev.ru/
Сайт по магии (и не только по OpenGL) http://pmg.org.ru/index.html
Подборка книг по OpenGL и DirectX: http://torrents.ru/forum/viewtopic.php?t=952051
Хорошее руководство по OpenGL и FreeBasic, жаль что на немецком http://other.paul-grunewald.de/ogl/index.html Это подобие Красной книги OpenGL с примерами на ФБ, весьма полезна.
И наконец сама OpenGL Red Book: http://narod.ru/disk/4738790000/OpenGL%20Red%20Book.pdf.html
Думаю, пригодится
Re: OpenGL - всё связанное с ним.
Огромное спасибо! Особенно за руководство на немецком.
Только вопрос есть: есть ли возможность увеличить "глубину" экрана? А то она -127 до 128, а требуется бо'льшее расстояние. (2 байта хотябы глубина)
Только вопрос есть: есть ли возможность увеличить "глубину" экрана? А то она -127 до 128, а требуется бо'льшее расстояние. (2 байта хотябы глубина)
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 30
Откуда : Москва
Re: OpenGL - всё связанное с ним.
ето как, если не секрет, а то я чет недогоняю... мож глубину цвета?"глубину" экрана
Re: OpenGL - всё связанное с ним.
Это глубина, называется Z-buffer . Этот буфер размером с экран, но он отображает не цвет, а "дальность" точки от экрана. (Это для того, что бы было возможно правильно отображать перекрывающие друг друга плоскости ( Х )) На экране отображают только ближайшие точки
(Поправьте меня если я что-то не то сказал)
Попробуйте сделать так:
Нарисовать текстурку, у которой глубина каждой точки равна 0 и перекрывающую её текстуру с глубиной 1. Будет видна только первая текстура.
А у меня такая проблема:
глубину можно задать только в пределах 256 значений, а запланированная дальность просмотра много больше. (65536(2^16) - такая дальность мне подойдёт)
(Поправьте меня если я что-то не то сказал)
Попробуйте сделать так:
Нарисовать текстурку, у которой глубина каждой точки равна 0 и перекрывающую её текстуру с глубиной 1. Будет видна только первая текстура.
А у меня такая проблема:
глубину можно задать только в пределах 256 значений, а запланированная дальность просмотра много больше. (65536(2^16) - такая дальность мне подойдёт)
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 30
Откуда : Москва
Re: OpenGL - всё связанное с ним.
так бы сразу и сказал... а как ты умудряешся сам выставлять глубину, если не секрет, наскока я помню, то его (Z-buffer) надо только включить, а расчет того, что необходимо отображать перед чем уже делает сам OpenGL без участия программиста... если в чем ошибаюсь, поправьте, желательно приложив кусок кодаZ-buffer
Re: OpenGL - всё связанное с ним.
О, нет. Я наверно неправильно высказался.
Вот код:
Те цифры, которые обозначены Z (glVertex3i x,y,Z), отображают дальность от экрана. опытным путём я установил, что если они больше 128 или меньше -127, то текстурка обрезается.(уголок изчезает)
А я бы хотел, что бы возможное расстояние было больше.
Вот код:
- Код:
#Include "inc/2d_opengl.bi"
Type Vertex2d
x As Integer
y As Integer
End Type
Type Vertex3d
x As Integer
y As Integer
z As Integer
End Type
Type Triangle
Ver(1 To 3) As Vertex3d
End Type
Type Object
Poloz As Vertex3d
End Type
' Festlegung der Konstanten, die fur den Bildschirm wichtig sind
const scrnX = 1024
const scrnY = 768
const depth = 32
const fullscreen = &h0 ' Vollbildmodus ( &h0 = aus, &h1 = an )
screenres scrnX,scrnY,depth,,&H3'&h2 OR fullscreen
' Konfiguration von OpenGL
glMatrixMode(GL_PROJECTION) ' Matrix definieren
glLoadIdentity
glViewport(0,0,scrnX,scrnY) ' Achse festlegen
glOrtho(0,scrnX,scrnY,0,-128,128)
glMatrixMode(GL_MODELVIEW) ' Deaktivierung des Rendern der Ruckseiten
glEnable(GL_CULL_FACE)
glCullFace(GL_BACK)
glEnable GL_TEXTURE_2D ' Texturen aktivieren
glLoadIdentity
glEnable(GL_DEPTH_TEST) ' Tiefentest
glDepthFunc(GL_LESS)
glEnable(GL_ALPHA_TEST) ' Alphatest
glAlphaFunc(GL_GREATER, 0.1)
DIM Textur(2) AS GFXType
load_texture "grass.bmp",Textur(0),3 ' 3 - eto "razmazivanie"
Hauptschleife:
do
glClear GL_COLOR_BUFFER_BIT OR GL_DEPTH_BUFFER_BIT
glBindTexture GL_TEXTURE_2D, Textur(0).Handle
glTranslatef 0,0,0
glBegin GL_QUADS
'GL_TRIANGLES
'glColor3ub 255,0,0
glTexCoord2f 0, 0
glVertex3i 0, 512 , -128 '' LINKS UNTEN (1. Koordinate)
glTexCoord2f 1, 0
glVertex3i 512, 512-64, 0 '' RECHTS UNTEN (2. Koordinate)
glTexCoord2f 1, 1
glVertex3i 512, 0+64 , 0 '' RECHTS OBEN (3. Koordinate)
glTexCoord2f 0, 1
glVertex3i 0, 0, 0 '' LINKS OBEN (4. Koordinate)
glEnd
glBindTexture GL_TEXTURE_2D, 0
glFlush
flip
screensync
loop until multikey(&h01)
Те цифры, которые обозначены Z (glVertex3i x,y,Z), отображают дальность от экрана. опытным путём я установил, что если они больше 128 или меньше -127, то текстурка обрезается.(уголок изчезает)
А я бы хотел, что бы возможное расстояние было больше.
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 30
Откуда : Москва
Re: OpenGL - всё связанное с ним.
- Код:
glBegin GL_QUADS
glTexCoord2f 0, 0
glVertex3i 0, 0, 0
glTexCoord2f 0, 1
glVertex3i 0, 512 , 0
glTexCoord2f 1, 1
glVertex3i 512, 512-128, 0
glTexCoord2f 1, 0
glVertex3i 512, 0+128 , 0
glEnd
PS я перепробовал все варианты GL_...
PPS я нашёлспособ увеличить Z-buffer! нужно ставить glOrtho(0,scrnX,scrnY,0,-65536,65536) в начале проги
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 30
Откуда : Москва
Re: OpenGL - всё связанное с ним.
Я уже всё перерыл, даже нашёл исходник шутера от первого лица на С++ и достал форумчан на GameDev , но никак не могу решить эту проблему. Кто-нибуть из посетителей сайта использует опенжл? Если да, то помогите плиз!
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 30
Откуда : Москва
Re: OpenGL - всё связанное с ним.
Скриншот:
http://files.filefront.com/10901077108210891090109112rar/;12920773;/fileinfo.html
Исходник:
http://files.filefront.com/10901077108210891090109112rar/;12920773;/fileinfo.html
Исходник:
- Код:
#Include "inc/2d_opengl.bi"
Type Vertex2d
x As Integer
y As Integer
End Type
Type Vertex3d
x As Integer
y As Integer
z As Integer
End Type
Type Triangle
Ver(1 To 3) As Vertex3d
End Type
Type Object
Poloz As Vertex3d
End Type
' Festlegung der Konstanten, die fur den Bildschirm wichtig sind
const scrnX = 1024
const scrnY = 768
const depth = 32
const fullscreen = &h0 ' Vollbildmodus ( &h0 = aus, &h1 = an )
screenres scrnX,scrnY,depth,,&H3'&h2 OR fullscreen
' Konfiguration von OpenGL
glMatrixMode GL_PROJECTION ' Matrix definieren
glLoadIdentity
'gluPerspective 45.0, 1024.0/768.0, 0.1, 200.0
glViewport(0,0,scrnX,scrnY) ' Achse festlegen
glOrtho(0,scrnX,scrnY,0,-100,100) '-128,128
glMatrixMode GL_MODELVIEW ' Deaktivierung des Rendern der Ruckseiten
glEnable(GL_CULL_FACE)
glCullFace(GL_BACK)
glEnable GL_TEXTURE_2D ' Texturen aktivieren
glLoadIdentity
glEnable(GL_DEPTH_TEST) ' Tiefentest
glDepthFunc(GL_LESS)
glEnable(GL_ALPHA_TEST) ' Alphatest
glAlphaFunc(GL_GREATER, 0.1)
DIM Textur(2) AS GFXType,a(4) As GLfloat
gluLookAt 0,0,-0.7,0,0,-8,0,1,0
'a(1)=0
'a(2)=912
'a(3)=512
'a(2)=0
load_texture "grass.bmp",Textur(0),3'3 ' (-1=>N=>19)
'glEnable GL_BLEND
'gluPerspective 45,Width,.1,100
'glTranslatef(0.0,0.0,-5.0)
Do
glClear GL_COLOR_BUFFER_BIT OR GL_DEPTH_BUFFER_BIT
' glGenTextures 1, textur(0).ImageData
glBindTexture GL_TEXTURE_2D, Textur(0).Handle
'glTranslatef 0,0,0
'glPolygonMode GL_FRONT_AND_BACK,GL_FILL
' glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR)
glBegin GL_POLYGON
glTexCoord2i 0, 0
glVertex3f 0,0,0.2
glTexCoord2i 0, 1
glVertex3f 0,512,20
glTexCoord2i 1, 1
glVertex3f 512,312 ,20
glTexCoord2i 1, 0
glVertex3f 512,200 ,20
glend
glBindTexture GL_TEXTURE_2D, 0
'
' !! Hier kommen die Zeichenbefehle rein !!
'
'glFlush ' Verarbeitung der Befehle
Flip
'screensync
loop until multikey(&h01)
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 30
Откуда : Москва
Re: OpenGL - всё связанное с ним.
Жалко, что никто не отвечает.
Возник у меня такой вопрос:
Если эту же текстуру накладывать не стандартной функцией glBegin GL_QUADS... glEnd, а своей функцией со своей фильтрацией (каждый тексиль использует 8 треугольников(GL_TRIANGLES), с различными цветами вершин), то будет ли это гораздо сильнее грузить компьютер(при очень большом кол-ве тексилей), чем обычные текстуры с тем же кол-вом тексилей?
Я почему спрашиваю - долго это делать, не хочется разочароваться.
PS и все-таки помогите с обычным натягиванием текстуры.
Возник у меня такой вопрос:
Если эту же текстуру накладывать не стандартной функцией glBegin GL_QUADS... glEnd, а своей функцией со своей фильтрацией (каждый тексиль использует 8 треугольников(GL_TRIANGLES), с различными цветами вершин), то будет ли это гораздо сильнее грузить компьютер(при очень большом кол-ве тексилей), чем обычные текстуры с тем же кол-вом тексилей?
Я почему спрашиваю - долго это делать, не хочется разочароваться.
PS и все-таки помогите с обычным натягиванием текстуры.
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 30
Откуда : Москва
Re: OpenGL - всё связанное с ним.
попробуй ето:
Если опять будет косяк, прошу скрин...
- Код:
glBegin GL_POLYGON
glTexCoord2i 0, 0
glVertex3f 0,0,0.2
glTexCoord2i 0, 1
glVertex3f 0,512,20
glTexCoord2i 1, 1
glVertex3f 512,312 ,20
glTexCoord2i 1, 0
glVertex3f 512,200 ,20
glend
- Код:
glBegin GL_TRIANGLES
glTexCoord2i 0, 0
glVertex3f 0,0,10
glTexCoord2i 0, 1
glVertex3f 0,512,10
glTexCoord2i 1, 0
glVertex3f 512,200 ,10
glTexCoord2i 1, 1
glVertex3f 512,312,10
glTexCoord2i 0, 1
glVertex3f 0,512,10
glTexCoord2i 1, 0
glVertex3f 512,200,10
glend
Если опять будет косяк, прошу скрин...
Re: OpenGL - всё связанное с ним.
блииин, башка под вечер уже не соображает, кароче вот:
- Код:
glBegin GL_POLYGON
glTexCoord2i 0, 0
glVertex3f 0,0,0.2 '!!!тут по координате z точка не в плоскости, перпедикулярной к наблюдателю, следовательно полигон загибается, ну и текстура под углом так выглядит
glTexCoord2i 0, 1
glVertex3f 0,512,20
glTexCoord2i 1, 1
glVertex3f 512,312 ,20
glTexCoord2i 1, 0
glVertex3f 512,200 ,20
glend
Книги
Вот несколько книг которые может быть смогут помочь:Books_3dgraphics.rar
К сожаление, не интересовался данным вопросом и не могу, что либо конкретное посоветовать
К сожаление, не интересовался данным вопросом и не могу, что либо конкретное посоветовать
Re: OpenGL - всё связанное с ним.
Спасибо.
(рисунок я укоротил)
Не.Этот код выводит треугольник. Я очень подозреваю, что у меня неправильно инициализирован OpenGL.
Если изменить на GL_TRIANGLE_STRIP, то получиться та же проблема, что и на скриншотах выше.
Мне бы увидеть инициализацию OpenGL на фрибейсике(немецкая не подойдёт).
И ошибка не внутри glBegin ... glEnd - мне на форуме GameDev много вариантов предлагали. И всё одно и то же. С
(рисунок я укоротил)
Не.Этот код выводит треугольник. Я очень подозреваю, что у меня неправильно инициализирован OpenGL.
Если изменить на GL_TRIANGLE_STRIP, то получиться та же проблема, что и на скриншотах выше.
Мне бы увидеть инициализацию OpenGL на фрибейсике(немецкая не подойдёт).
И ошибка не внутри glBegin ... glEnd - мне на форуме GameDev много вариантов предлагали. И всё одно и то же. С
Gena- Сообщения : 182
Дата регистрации : 2008-11-05
Возраст : 30
Откуда : Москва
Страница 1 из 2 • 1, 2
Страница 1 из 2
Права доступа к этому форуму:
Вы не можете отвечать на сообщения
|
|