Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 2010.03.28;
Скачать: [xml.tar.bz2];

Вниз

Можно ли отключить "куб отсечения" в OpenGL   Найти похожие ветки 

 
Вася   (2010-01-20 02:10) [0]

всем привет! начал я вот изучать OpenGL...

научился задавать плоскости.первая тренировка - заставить вращаться куб:
были непонятные глюки, долго не мог сообразить что такое, но потом подсказали что нужно включить Z-Buffer... =)

кубик из 6-ти квадратов, разворачиваю мир (или как-то так), но то что выходит за область ((1,1,1),(-1,-1,-1)) ка бы отрезается нафиг... =(
знакомый сказал, что это зовётся "куб отсечения" - можно его отключить как-то? =((

з.ы. и если не затруднит посоветуйте хорошую самоучитель по OpenGL, а то моя книга - фигня полная... =(((


 
antonn ©   (2010-01-20 02:19) [1]

мож нормали не туда повернуты? :)


 
Вася   (2010-01-20 02:36) [2]

я ж тока начал изучать.по самоучителю.не в курсе что это. =(

procedure draw;
begin
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glRotatef(angX, 1, 0, 0);
glRotatef(angY, 0, 1, 0);
glRotatef(angZ, 0, 0, 1);
glBegin(GL_QUADS);
...
glEnd;
SwapBuffers(DC);
end;


а обязательно каждую отрисовку все квадраты заного в glBegin задавать?фигура же пока не меняется у меня, тока крутится...просто когда много квадратов всё подвисать начинает. =((


 
Вася   (2010-01-20 02:40) [3]

з.ы. "квадратом" я это называю:

// квадрат №7
glTexCoord2f(0, 0); glVertex2f(-1, -1);
glTexCoord2f(0, 1); glVertex2f(-1, 1);
glTexCoord2f(1, 1); glVertex2f(1, 1);
glTexCoord2f(1, 0); glVertex2f(1, -1);
// ...


это как бы полигон чтоль, тока квадратный... :)


 
Вася   (2010-01-20 02:42) [4]

ой... это у меня двумерный был... вот трёхмерный:

// квадрат №31
glTexCoord2f(0, 0); glVertex3f(-0.3, -0.3, 0.9);
glTexCoord2f(0, 1); glVertex3f(-0.3, 0.3, 0.9);
glTexCoord2f(1, 1); glVertex3f(0.3, 0.3, 0.9);
glTexCoord2f(1, 0); glVertex3f(0.3, -0.3, 0.9);
// ...


 
Вася   (2010-01-21 13:48) [5]

Удалено модератором
Примечание: Создание пустых сообщений


 
grammar-nazi   (2010-01-21 21:56) [6]

glFrustum() спасёт отца русской демократии.


 
Вася   (2010-01-22 16:40) [7]

> отца русской демократии.

скорей внука =))

а яндекс сказал это:

Функция glFrustum умножает текущую матрицу на матрицу перспективного проецирования.

что за матрицы? о_О
написал значений наугад - вообще ничего не изменилось...

а ещё у меня оказалось что Z-Buffer не всегда работает как надо. мир покрутится чуть - и вроде выправляется, а при запуске будто и не работает. =((
и когда больше 200-300 "квадратов" вообще ужасть как виснет всё. =(((


может ктонить посоветует всётаки нормальный самоучитель, а то мой повидимому вообще ниочём... :"(


 
Вася   (2010-01-23 17:47) [8]

нашел такую ссыль: http://forum.codenet.ru/archive/index.php/t-36975.html

исходя из того,что там написано - то что я спрашивал - невозможно... :"(((
так что наверное можно закрывать тему...

хотя на совет по самоучителю я всё ищо надеюсь (по той ссыли тоже про какие-то "уравнения плоскости","преобразования координат" и матрицы,а в моей фигне про подобное и упоминания нету).


 
@!!ex ©   (2010-01-23 20:07) [9]

> [7] Вася   (22.01.10 16:40)
> что за матрицы? о_О

ЛОл. :)
А каким волшебным образом у тебя трансформируются вершины и 3Д изображение проецируется на плоскость экрана??


> [7] Вася   (22.01.10 16:40)
> написал значений наугад - вообще ничего не изменилось...

Наш метод... ага.


> может ктонить посоветует всётаки нормальный самоучитель,
> а то мой повидимому вообще ниочём... :"(

Гугли туторы NeHe
Считаются лучшими.
А еще, найди препода по вышмату и попроси объяснить матрицы и вектора.
Если ты в 10 классе или старше, то все поймешь без проблем.
ГРафика станет проще... гораздо проще.
А то потом будешь по поисковикам лазить, искать код считающий нормаль. :%)


 
Вася   (2010-01-23 21:53) [10]

> А каким волшебным образом у тебя трансформируются вершины и 3Д изображение проецируется на плоскость экрана?

ну откуда же мне знать-то?)мне распечатали самоучитель какой-то...там вот примерно такие примеры были:

procedure draw;
begin
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glRotatef(angX, 1, 0, 0);
glRotatef(angY, 0, 1, 0);
glRotatef(angZ, 0, 0, 1);
glScalef(z, z, z);
glBegin(GL_QUADS);
  // квадрат № 1
  glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0,  1.0);
  glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0,  1.0);
  glTexCoord2f(1.0, 1.0); glVertex3f( 1.0,  1.0,  1.0);
  glTexCoord2f(0.0, 1.0); glVertex3f(-1.0,  1.0,  1.0);
  // квадрат № 2
  glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0, -1.0);
  glTexCoord2f(1.0, 1.0); glVertex3f(-1.0,  1.0, -1.0);
  glTexCoord2f(0.0, 1.0); glVertex3f( 1.0,  1.0, -1.0);
  glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0, -1.0);
  // квадрат № 3
  glTexCoord2f(0.0, 1.0); glVertex3f(-1.0,  1.0, -1.0);
  glTexCoord2f(0.0, 0.0); glVertex3f(-1.0,  1.0,  1.0);
  glTexCoord2f(1.0, 0.0); glVertex3f( 1.0,  1.0,  1.0);
  glTexCoord2f(1.0, 1.0); glVertex3f( 1.0,  1.0, -1.0);
  // квадрат № 4
  glTexCoord2f(1.0, 1.0); glVertex3f(-1.0, -1.0, -1.0);
  glTexCoord2f(0.0, 1.0); glVertex3f( 1.0, -1.0, -1.0);
  glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0,  1.0);
  glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0,  1.0);
  // квадрат № 5
  glTexCoord2f(1.0, 0.0); glVertex3f( 1.0, -1.0, -1.0);
  glTexCoord2f(1.0, 1.0); glVertex3f( 1.0,  1.0, -1.0);
  glTexCoord2f(0.0, 1.0); glVertex3f( 1.0,  1.0,  1.0);
  glTexCoord2f(0.0, 0.0); glVertex3f( 1.0, -1.0,  1.0);
  // квадрат № 6
  glTexCoord2f(0.0, 0.0); glVertex3f(-1.0, -1.0, -1.0);
  glTexCoord2f(1.0, 0.0); glVertex3f(-1.0, -1.0,  1.0);
  glTexCoord2f(1.0, 1.0); glVertex3f(-1.0,  1.0,  1.0);
  glTexCoord2f(0.0, 1.0); glVertex3f(-1.0,  1.0, -1.0);
glEnd;
SwapBuffers(DC);
end;


в таймере изменяем angX, angY, angZ и z и вызываем draw.получается куб крутящийся с масштабированием.и всё.больше никаких объяснений.

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

а на Z-Buffer я вроде зря говорил, это обман зрения кажется такой получался.


 
@!!ex ©   (2010-01-23 22:01) [11]

> [10] Вася   (23.01.10 21:53)

Кажется тебе надо разобраться в математической части.
Тогда ты поймешь и что такое Frustum(реально там ни разу не куб, а пирамида. Кубом она становится в плоскости экрана), и
как правильно треугольники быстр рендерить, и какие параметры передавать при задании перспективы и модельной матрицу и проч и проч.


 
Вася   (2010-01-23 22:22) [12]

> Кажется тебе надо разобраться в математической части.

я попробую.будем стараться.=)
вот только траффика маловато у меня,нет ли где-нибудь заархивированных статеек каких попроще?
NeHe вроде нашлось ( http://nehe.gamedev.net/ ),но там ж всё по английски...будут проблемы.надо конечно англ.изучать,но пока переведу всё нормально годы пройдут...=(

а вот мне с самоучителем вместе дали для Делфи два файла специальных: dglOpenGL.pas и Textures.pas - это нормальные файлы (может подсунули что не то)?
а если нормальные,то бывают ли у них как бы версии чтоль (могут ли быть где-то более новые их версии)?


 
@!!ex ©   (2010-01-23 23:36) [13]

> [12] Вася   (23.01.10 22:22)
> NeHe вроде нашлось ( http://nehe.gamedev.net/ ),но там ж
> всё по английски...будут проблемы.надо конечно англ.изучать,
> но пока переведу всё нормально годы пройдут...=(

Есть на русском.


> а вот мне с самоучителем вместе дали для Делфи два файла
> специальных: dglOpenGL.pas и Textures.pas - это нормальные
> файлы (может подсунули что не то)?

Это не нормальные файлы. Нормальный - opengl.pas идет в поставке с Delphi. расширения ИМХО стоит подлкючать самостоятельно, хотя тут на вкус и цвет...
Textures.pas - скорее всего от Яна Хорна(мир его праху), там для практического применения нужно много переделать.


> [12] Вася   (23.01.10 22:22)
> а если нормальные,то бывают ли у них как бы версии чтоль
> (могут ли быть где-то более новые их версии)?

Ну кто-то делает новые версии... Лично я предпочитаю свой файлик с нужными мне расширениями.



Страницы: 1 вся ветка

Форум: "Начинающим";
Текущий архив: 2010.03.28;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.49 MB
Время: 0.004 c
2-1264427732
webpauk
2010-01-25 16:55
2010.03.28
Отображение элементов


2-1264251701
Unior
2010-01-23 16:01
2010.03.28
Как сделать перемещие по группам в DBGrid?


4-1227617004
dmitry_12_08_73
2008-11-25 15:43
2010.03.28
Определение самого верхнего окна в выделенной области экрана


15-1263112641
Nic
2010-01-10 11:37
2010.03.28
Соединение из Delphi MSSQL Server через RDP. Как?


15-1263034579
palva
2010-01-09 13:56
2010.03.28
Опять про Аватар





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский