Transform-Feedback ist doch für GPGPU und sowas auf Karten ab DirectX 10? Naja, so fortgeschritten bin ich leider noch nicht, ich habe ja schon mit einfachen Vertexshadern zu kämpfen.
Vermutlich liegt der Fehler irgendwie beim Laden der Vertexdaten in den Grafikspeicher. Vielleicht gibt es da ja was zu beanstanden:Code: void C3D_Model::LoadToVRAM(void) { glGenBuffers(1, &glVBOID); glBindBuffer(GL_ARRAY_BUFFER, glVBOID); glBufferData(GL_ARRAY_BUFFER, 40 * IndicesMax, NULL, GL_STATIC_DRAW); char* pVBOData = (char*) glMapBuffer(GL_ARRAY_BUFFER, GL_WRITE_ONLY); float fBoneWeight; for(unsigned short i=0; i<IndicesMax; ++i) { memcpy(pVBOData, &(Vertices[VertexIndices[i]].x), 4); pVBOData += 4; memcpy(pVBOData, &(Vertices[VertexIndices[i]].y), 4); pVBOData += 4; memcpy(pVBOData, &(Vertices[VertexIndices[i]].z), 4); pVBOData += 4; memcpy(pVBOData, &(Normals[VertexIndices[i]].x), 4); pVBOData += 4; memcpy(pVBOData, &(Normals[VertexIndices[i]].y), 4); pVBOData += 4; memcpy(pVBOData, &(Normals[VertexIndices[i]].z), 4); pVBOData += 4; memcpy(pVBOData, &(Texels[TexelIndices[i]].x), 4); pVBOData += 4; memcpy(pVBOData, &(Texels[TexelIndices[i]].y), 4); pVBOData += 4; fBoneWeight = BoneWeights[VertexIndices[i]] + float(PrimaryBones[VertexIndices[i]]); memcpy(pVBOData, &fBoneWeight, 4); pVBOData += 4; fBoneWeight = float(SecondaryBones[VertexIndices[i]]); memcpy(pVBOData, &fBoneWeight, 4); pVBOData += 4; } glUnmapBuffer(GL_ARRAY_BUFFER); }
Sorry, dass ich hier so viel Code poste. Geht das eigentlich mit memcpy()?
edit: Hab's jetzt mal ohne memcpy() gemacht, was eigentlich auch viel eleganter ist. Das Ergebnis ist allerdings das gleiche.
Danke für weitere Antworten!
|