2011-08-09 3 views
1

Я использую OpenGL и C для создания 2D-рендеринга. Я изучаю VBOs и как их использовать для рендеринга немедленного режима. Я читал из: http://www.opengl.org/wiki/Vertex_Buffer_ObjectКакую вершину я должен создать для спрайтов?

Учебник предлагает следующее:

struct MyVertex 
{ 
float x, y, z;  //Vertex 
float nx, ny, nz;  //Normal 
float s0, t0;   //Texcoord0 
float s1, t1;   //Texcoord1 
float s2, t2;   //Texcoord2 
float padding[4]; 
}; 

Мне не нужны нормальные значения, и я не уверен, как и почему существуют три координаты текстуры для одной вершины.

Я думаю, что все, что мне нужно, это Vertex (XYZ), и один Texcoord (s0, t0 < - до сих пор не знает, что это значит).

+0

Вы ориентируетесь на фиксированное или программируемое оборудование? – genpfault

ответ

1

Это был не более чем пример; не принимайте этот вершинный формат как евангелие или даже предложение. Действительно, в любом серьезном приложении нельзя было бы использовать так много поплавков.

В любом случае, если вы хотите удалить эти атрибуты, это нормально. Тебе решать.

Что касается того, зачем нужно 3 набора координат текстуры, это было бы потому, что на поверхности было три набора текстурных сопоставлений. Есть основания для подобных действий, но на практике это довольно редко.

Кроме того, OpenGL имеет другой способ обозначения его координат текстуры. Вместо «УФ», как это делает большинство других вещей, OpenGL использует «ST».

+0

Большое спасибо за это объяснение. –

Смежные вопросы