Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2010.03.28;
Скачать: CL | DM;

Вниз

Можно ли отключить "куб отсечения" в 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;
Скачать: CL | DM;

Наверх




Память: 0.51 MB
Время: 0.017 c
4-1231611546
AzzHell
2009-01-10 21:19
2010.03.28
Как узнать размер большого файла


2-1264666767
Вася
2010-01-28 11:19
2010.03.28
аналог Set Of


15-1262714844
Зима
2010-01-05 21:07
2010.03.28
Откуда пошло и для чего указывать авторство?


1-1244383848
dmitry_12_08_73
2009-06-07 18:10
2010.03.28
При копировании экрана ее удаётся захватить окно со свойством For


1-1247504656
Дмитрий Белькевич
2009-07-13 21:04
2010.03.28
Особенности при работе с com портом в dll.