Форум: "Начинающим";
Текущий архив: 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