WielkiPan:
Co do diabła... Może jeszcze coś przegapiłem - spoko spojrzę w wolnej chwili co i jak linia po linii.
Mógłbyś jakieś screeny zrobić tego przezroczystego co przesłania chmury? Może jest jakiś punkt wspólny, tzn. te wszystkie duchy i zielone wychodzą z końca mapki?
Dodatkowo "W" podczas trybu free pokazuje wszystko w wireframe. Może to kogoś na coś naprowadzi. Najgorsze jest to, że nie mam jak tego przetestować sam :(.
therealremi:
Spróbuję to znaleźć. Docelowe sterowanie ma być bardziej skomplikowane, na chwilę obecną jak widzisz walczę z zielonymi :D.
Powiem tak, ja błędu nie widzę przy samym VBO:
// deklaracja
unsigned int maxvbo=0;
GLuint vbo_vertex;
GLfloat vertices[3000000];
char *extensions = (char*)glGetString(GL_EXTENSIONS);
if (strstr(extensions, "GL_ARB_vertex_buffer_object"))
{
glGenBuffersARB = (PFNGLGENBUFFERSARBPROC) wglGetProcAddress("glGenBuffersARB");
glBindBufferARB = (PFNGLBINDBUFFERARBPROC) wglGetProcAddress("glBindBufferARB");
glBufferDataARB = (PFNGLBUFFERDATAARBPROC) wglGetProcAddress("glBufferDataARB");
glDeleteBuffersARB = (PFNGLDELETEBUFFERSARBPROC) wglGetProcAddress("glDeleteBuffersARB");
}
else
{
fprintf(stderr, "Couldn't initialize VBO\n");
}
// budowanie VBO
unsigned int ww=0;
for (w=2; w<MAXPOLE-2; w++)
for (q=2; q<MAXPOLE-2; q++)
if (pole[q][w].y>0 || pole[q+1][w].y>0 || pole[q+1][w+1].y>0 || pole[q][w+1].y>0)
{
vertices[ww]=pole[q][w].x; ww++;
vertices[ww]=pole[q][w].y; ww++;
vertices[ww]=pole[q][w].z; ww++;
vertices[ww]=pole[q+1][w].x; ww++;
vertices[ww]=pole[q+1][w].y; ww++;
vertices[ww]=pole[q][w].z; ww++;
vertices[ww]=pole[q+1][w].x; ww++;
vertices[ww]=pole[q+1][w+1].y; ww++;
vertices[ww]=pole[q][w+1].z; ww++;
vertices[ww]=pole[q][w].x; ww++;
vertices[ww]=pole[q][w+1].y; ww++;
vertices[ww]=pole[q][w+1].z; ww++;
}
glGenBuffersARB(1, &vbo_vertex);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, vbo_vertex);
glBufferDataARB(GL_ARRAY_BUFFER_ARB, ww*sizeof(GL_FLOAT), vertices, GL_STATIC_DRAW_ARB);
maxvbo=ww;
// wyswietlanie VBO
glEnableClientState(GL_VERTEX_ARRAY);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, vbo_vertex);
glVertexPointer(3, GL_FLOAT, 0, (char *)NULL);
glDrawArrays(GL_QUADS, 0, maxvbo);
glDisableClientState(GL_VERTEX_ARRAY);
glBindBufferARB(GL_ARRAY_BUFFER_ARB, 0);
glBindBufferARB(GL_ELEMENT_ARRAY_BUFFER_ARB, 0);
Mógłby mnie ktoś tylko upewnić, że nie mam jakiś omamów?