не знаю не знаю
я почитал но ничего не полнял к сожалению
зато потом в инете по разным статьям наконец то сложилось то чего я хотел узнать
теперь борюсь с тем что бы переместить все в класс, и если надо нарисовать то указываю что нарисовать если надо сделать меш то указываю из чего
но пока что ничего не выходит =(
вот то что я делаю
Код:
CObject::CObject()
{
unsigned int vboId = NULL;
}
////////////////////////////////////////////////////////////////////////////////////
CObject::~CObject()
{
}
////////////////////////////////////////////////////////////////////////////////////
void CObject::CreateMeshe(float *vertices, float *normals, float *colors)
{
vboId = 0;
glGenBuffers(1, &vboId);
glBindBuffer(GL_ARRAY_BUFFER, vboId);
glBufferData(GL_ARRAY_BUFFER, sizeof(vertices)+sizeof(normals)+sizeof(colors), 0, GL_STATIC_DRAW);
glBufferSubData(GL_ARRAY_BUFFER, 0, sizeof(vertices), vertices);
glBufferSubData(GL_ARRAY_BUFFER, sizeof(vertices), sizeof(normals), normals);
glBufferSubData(GL_ARRAY_BUFFER, sizeof(vertices)+sizeof(normals), sizeof(colors), colors);
}
////////////////////////////////////////////////////////////////////////////////////
void CObject::DrawPrimitive(float *vertices, float *normals)
{
glBindBufferARB(GL_ARRAY_BUFFER, vboId);
glEnableClientState(GL_NORMAL_ARRAY);
glEnableClientState(GL_COLOR_ARRAY);
glEnableClientState(GL_VERTEX_ARRAY);
glNormalPointer(GL_FLOAT, 0, (void*)sizeof(vertices));
glColorPointer(3, GL_FLOAT, 0, (void*)(sizeof(vertices)+sizeof(normals)));
glVertexPointer(3, GL_FLOAT, 0, 0);
glDrawArrays(GL_QUADS, 0, 4);
glDisableClientState(GL_VERTEX_ARRAY);
glDisableClientState(GL_COLOR_ARRAY);
glDisableClientState(GL_NORMAL_ARRAY);
glBindBuffer(GL_ARRAY_BUFFER, 0);
}
но ничего не рисует =((
если что то я задаю вот такие вершины и передаю их финкциям
float vertices[] = {1,1,1, -1,1,1, -1,-1,1, 1,-1,1};
float normals[] = {0,0,1, 0,0,1, 0, 0,1, 0, 0,1};
float colors[] = {1,1,1, 1,1,0, 1, 0,0, 1, 0,1};