I am writing an md2 loader and get an access violation when I render it. Here is my code.
definitions:
#ifndef _md2_h_
#define _md2_h_
#include <windows.H>
#include <stdio.h>
struct MD2_HEADER
{
int magic;
int version;
int skinWidth;
int skinHeight;
int frameSize;
int numSkins;
int numVertices;
int numTexCoords;
int numTriangles;
int numGlCommands;
int numFrames;
int offsetSkins;
int offsetTexCoords;
int offsetTriangles;
int offsetFrames;
int offsetGlCommands;
int offsetEnd;
};
struct MD2_VERTEX
{
byte vertex[3];
byte lightNormalIndex;
};
struct MD2_FRAME
{
float scale[3];
float translate[3];
char name[16];
MD2_VERTEX *verts;
};
class MD2
{
public:
MD2_HEADER header;
MD2_FRAME *frames;
__declspec(dllexport) bool LoadMD2(char *fileName);
__declspec(dllexport) void RenderMD2();
};
#endif
code
#include <md2.h>
#include <gl\gl.h> // Header File For The OpenGL32 Library
#include <gl\glu.h>
__declspec(dllexport) bool MD2::LoadMD2(char *fileName)
{
int i;
FILE *filePointer;
filePointer=fopen(fileName,"rb");
if(!filePointer)
{
return FALSE;
}
fread(&header,1,sizeof(MD2_HEADER),filePointer);
frames=new MD2_FRAME[header.numFrames];
fseek(filePointer,header.offsetFrames,SEEK_SET);
for(i=0;i<header.numFrames;i++)
{
frames[i].verts=new MD2_VERTEX[header.numVertices];
fread(&frames[i],1,header.frameSize,filePointer);
}
fclose(filePointer);
return TRUE;
}
__declspec(dllexport) void MD2::RenderMD2()
{
int i,j;
glBegin(GL_TRIANGLES);
for(i=0;i<header.numFrames;i++)
{
for (j=0;j<header.numVertices;j++)
{
glVertex3f(frames[i].verts[j].vertex[0]*frames[i].scale[0]+frames[i].translate[0],
frames[i].verts[j].vertex[2]*frames[i].scale[2]+frames[i].translate[2],
-1*(frames[i].verts[j].vertex[1]*frames[i].scale[1]+frames[i].translate[1]));
}
}
glEnd();
}
"Computers are only as smart as their programers"
My Site-> Still working on it.
----------------------------------------------------"Plant a tree. Remove a Bush" -A bumper sticker I saw.