GU_TRIANGLE_STRIP - Filled triangles-strip (3 vertices for the first primitive, 1 for every following)
Т.е. на 1 полигон - 3 точки, на последующие 1. Попробую переделать.
Да, вот ещё что интересное увидел:
void sceGuFrontFace ( int order )
Set the current face-order (for culling).
This only has effect when culling is enabled (GU_CULL_FACE)
Culling order can be:
GU_CW - Clockwise primitives are not culled
GU_CCW - Counter-clockwise are not culled
Parameters:
order - Which order to use
Что это? кто - нить может сказать. Что, как заворачивать примитивы?
Ладно, это сейчас не так важно.
Чайник со СТРИПОМ(cube.zip - для 1.50, кидать в psp/game):
Fur die freiheit zu kampfen um jeden preis
Последний раз редактировалось pspowner; 24.11.2006 в 15:11.
Все эти команды аналогичны командам из обычного opengl, любая отрисовка подразумевает что у тебя есть видимые полигоны и невидимые (т.е. те что отрисовываются за видимыми глубже по z буферу) соотвественно enabled (GU_CULL_FACE) включает возможность проверки на отрисовку полигонов, а sceGuFrontFace собственно включает саму проверку на отображение полигонов переднего плана. GU_TRIANGLE_STRIP - соотвественно тоже полностью аналогичен командам opengl. В том примере что ты мне показывал, попробуй заменить GU_TRIANGLE_STRIP (каждый следующий полигон строится по двум предыдущем точкам и одной новой) на GU_TRIANGLES (каждый следующий полигон строится по трем новым точкам)
TRIANGLE_STRIP нужен для быстрой отрисовки больших обьемов полигонов, например любой ландшафт можно представить в виде одного стрипа, это сильно экономит видео память так как за место 3 вершин грузиш всего одну. Для мало полигональных моделей это не особо эффективно посему, используется чаще всего просто TRIANGLES. Хотя практически любую модельку можно представить в виде стрипа или набора стрипов (в моделерах есть такая галка).
Вот вроде нарисовался двусторонний полигон. Крутится так здорово.
Вопрос другой, как я буду, не отрываясь от предыдущего полигона, отрисовывать примитив, например Куб? Или это как в той детской загадке получается: нарисуйти домик, неотрывая ручку от бумаги и не повторяя нарисованных линий?
Fur die freiheit zu kampfen um jeden preis
Последний раз редактировалось pspowner; 27.11.2006 в 13:13.
Причина: добавил, подумав
Простой полигон состоит всего-лишь из трёх вершин.
В твоём примере это треугольник:
{1, 1, 0xff7f0000,-1,-1,0},
{1, 1, 0xff7f0000,1,1,0},
{1, 1, 0xff7f0000,0,0,1},
Чтобы завершить этот полигон и представить его ввиде квадратной плоскости нам нужно добавить обратный треугольник. Тоесть сомкнуть вершины так, что бы из двух полигонов получилась плоскость в виде квадрата.
Последовательность замыкания треугольников значения не имеет.
Муш, прото что квадрат состоит из двух треугольников - это понятно.
Спрашивал я немонго другое.
Четвёртая точка, в моём случае, делает обратную сторону полигона, если я правильно понял.
Если я добавлю ещё одну точку, то следующий полигон от каких вершин будет строиться?
От последних двух? А если мне надо нарисовать полигон не от этих вершин?
Вот тут и получается что я привязан к последнему нарисованному треугольнику. И если я это не буду учитывать, то на экране будет каша.
И что значит последовательность замыкания? Она всего одна, от последних 2х точек.
Поправьте, если где не прав.
добавлено через 1 минуту
Бони, понятно. Я посмотрю в максе, может есть такая возможность...
Fur die freiheit zu kampfen um jeden preis
Последний раз редактировалось pspowner; 27.11.2006 в 13:54.
Причина: добавил, подумав
Муш, прото что квадрат состоит из двух треугольников - это понятно.
Спрашивал я немонго другое.
Четвёртая точка, в моём случае, делает обратную сторону полигона, если я правильно понял.
Если я добавлю ещё одну точку, то следующий полигон от каких вершин будет строиться?
От последних двух? А если мне надо нарисовать полигон не от этих вершин?
Вот тут и получается что я привязан к последнему нарисованному треугольнику. И если я это не буду учитывать, то на экране будет каша.
И что значит последовательность замыкания? Она всего одна, от последних 2х точек.
Поправьте, если где не прав.
добавлено через 1 минуту
Бони, понятно. Я посмотрю в максе, может есть такая возможность...
Самый простой полигон состоит из 3 вершин. Если ты добавляешь вершину, то ожидать результата можно лишь завершив полигон. Пойми три точки в координатах x,y,z строят тебе твой треугольник. Следующий треугольник соответственно в других координатах. Замыкание - это значит сомкнуть два треугольника хотя бы для того, что бы получить квадратную плоскость.
добавлено через 2 минуты
Возможно в GU можно использовать триангуляцию монотонных полигонов. Это как раз то очем ты говорил "домик не отрывая ручки". Но об этом в GU я не знаю.
Последний раз редактировалось mushue; 27.11.2006 в 14:08.
Причина: добавил, подумав
Гы, значит кубик нарисовался, всё Ок. НО!
Почемуто некоторые треугольники помаргивают... т.е. Такое ощущение что сквозь них что-то пытается пробиться... Хм...
Мысли вслух:
Мне захотелось сделат что-то типа 3д движка. Ну чтобы, например, можнон было ходить вокруг этого кубика, смотреть на него с разных сторон.
Но возникли вопросы, над которыми мне стоит основательно задуматься.
Как заставить его вращаться вокруг наблюдателя? Вокруг Viewport?
Поскольку я этого никогда не делал, то возникла у меня идея начать смещение кубика по оси х в зависимости от расстояния от него.
Вот как-то так:
Не знаю, правильно это или нет, но результат есть. Хотя и не совсем такой как ожидалось.
Вобщем, пока в раздумьях я.
К тому же, я наконец-то воткнул в свой компьютер второй гигабайт оперативки и ,О ЧУДО!. Готика 3 стала просто летать - поэтому сейчас часть свободного времени трачу на эту игру. Когда она меня утомит, займусь 3д более плотно.
Fur die freiheit zu kampfen um jeden preis
Последний раз редактировалось pspowner; 29.11.2006 в 12:08.
А никто не знает, что в GU представляют собой матрицы GU_VIEW и GU_MODEL? В OpenGL это одна матрица преобразований локальной системы координат и зовётся она GL_MODELVIEW. А как это тут её умудрились разбить на две? Хм...