Original Post
Is there a reason an array of more than 32,768 segments would crass my program?
for(unsigned long int index2=0;index2<models[levelmodels[index].modelindex].nump*3;index2+=3){ //test if the poly is in the function float x1=models[levelmodels[index].modelindex].vers[(unsigned int)models[levelmodels[index].modelindex].polys[(unsigned int)index2*3]*3], z1=models[levelmodels[index].modelindex].vers[(unsigned int)models[levelmodels[index].modelindex].polys[(unsigned int)index2*3]*3+2], x2=models[levelmodels[index].modelindex].vers[(unsigned int)models[levelmodels[index].modelindex].polys[(unsigned int)(index2+1)*3]*3], z2=models[levelmodels[index].modelindex].vers[(unsigned int)models[levelmodels[index].modelindex].polys[(unsigned int)(index2+1)*3]*3+2], x3=models[levelmodels[index].modelindex].vers[(unsigned int)models[levelmodels[index].modelindex].polys[(unsigned int)(index2+2)*3]*3], z3=models[levelmodels[index].modelindex].vers[(unsigned int)models[levelmodels[index].modelindex].polys[(unsigned int)(index2+2)*3]*3+2]; float y1=models[levelmodels[index].modelindex].vers[(unsigned int)models[levelmodels[index].modelindex].polys[(unsigned int)index2*3]*3+1]+getheight(x1,z1), y2=models[levelmodels[index].modelindex].vers[(unsigned int)models[levelmodels[index].modelindex].polys[(unsigned int)(index2+1)*3]*3+1]+getheight(x2,z2), y3=models[levelmodels[index].modelindex].vers[(unsigned int)models[levelmodels[index].modelindex].polys[(unsigned int)(index2+2)*3]*3+1]+getheight(x3,z3); if(triangleinfrustum(x1,y1,z1,x2,y2,z2,x3,y3,z3)){ glBegin(GL_TRIANGLES); getlightcolor(&c,models[levelmodels[index].modelindex].vers[(unsigned int)models[levelmodels[index].modelindex].polys[(unsigned int)index2*3]*3],models[levelmodels[index].modelindex].vers[(unsigned int)models[levelmodels[index].modelindex].polys[(unsigned int)index2*3]*3+2]); glColor3f(c.r,c.g,c.b); glTexCoord2f(models[levelmodels[index].modelindex].texcords[(unsigned int)models[levelmodels[index].modelindex].polys[(unsigned int)index2*3+1]*2],models[levelmodels[index].modelindex].texcords[(unsigned int)models[levelmodels[index].modelindex].polys[(unsigned int)index2*3+1]*2+1]); glVertex3f(x1,y1,z1); getlightcolor(&c,models[levelmodels[index].modelindex].vers[(unsigned int)models[levelmodels[index].modelindex].polys[(unsigned int)(index2+1)*3]*3],models[levelmodels[index].modelindex].vers[(unsigned int)models[levelmodels[index].modelindex].polys[(unsigned int)(index2+1)*3]*3+2]); glColor3f(c.r,c.g,c.b); glTexCoord2f(models[levelmodels[index].modelindex].texcords[(unsigned int)models[levelmodels[index].modelindex].polys[(unsigned int)(index2+1)*3+1]*2],models[levelmodels[index].modelindex].texcords[(unsigned int)models[levelmodels[index].modelindex].polys[(unsigned int)(index2+1)*3+1]*2+1]); glVertex3f(x2,y2,z2); getlightcolor(&c,models[levelmodels[index].modelindex].vers[(unsigned int)models[levelmodels[index].modelindex].polys[(unsigned int)(index2+2)*3]*3],models[levelmodels[index].modelindex].vers[(unsigned int)models[levelmodels[index].modelindex].polys[(unsigned int)(index2+2)*3]*3+2]); glColor3f(c.r,c.g,c.b); glTexCoord2f(models[levelmodels[index].modelindex].texcords[(unsigned int)models[levelmodels[index].modelindex].polys[(unsigned int)(index2+2)*3+1]*2],models[levelmodels[index].modelindex].texcords[(unsigned int)models[levelmodels[index].modelindex].polys[(unsigned int)(index2+2)*3+1]*2+1]); glVertex3f(x3,y3,z3); glEnd(); } }models[levelmodels[index].modelindex] //as i've seen multiple times can become..Model* currModel=models[levelmodels[index].modelinux;Quote:
Original post by neonoblivion
*** Source Snippet Removed ***
...actually upon furthure examination it dies here, after iterating a bunch...
Quote:
Original post by Anonymous Poster Quote:
Original post by neonoblivion
float *pver=NULL,*ptex=NULL,*pnor=NULL;
pver=(float *)malloc(sizeof(float)*vers*3);
May I ask why --- since this is C++ -- you aren't using the following?:
pver = new float[vers*3];
vector<float> pver(vers*3); //May want to use val_array<float>for(unsigned int index2=0;index2<tempmodel->nump*3;index2+=3){ sprintf(errorstr,"%i",(unsigned long)index2*3); error(errorstr); //test if the poly is in the function float x1=tempmodel->vers[(unsigned int)tempmodel->polys[(unsigned int)index2*3]*3], z1=tempmodel->vers[(unsigned int)tempmodel->polys[(unsigned int)index2*3]*3+2], x2=tempmodel->vers[(unsigned int)tempmodel->polys[(unsigned int)(index2+1)*3]*3], z2=tempmodel->vers[(unsigned int)tempmodel->polys[(unsigned int)(index2+1)*3]*3+2], x3=tempmodel->vers[(unsigned int)tempmodel->polys[(unsigned int)(index2+2)*3]*3], z3=tempmodel->vers[(unsigned int)tempmodel->polys[(unsigned int)(index2+2)*3]*3+2]; float y1=tempmodel->vers[(unsigned int)tempmodel->polys[(unsigned int)index2*3]*3+1]+getheight(x1,z1), y2=tempmodel->vers[(unsigned int)tempmodel->polys[(unsigned int)(index2+1)*3]*3+1]+getheight(x2,z2), y3=tempmodel->vers[(unsigned int)tempmodel->polys[(unsigned int)(index2+2)*3]*3+1]+getheight(x3,z3); if(triangleinfrustum(x1,y1,z1,x2,y2,z2,x3,y3,z3)){ glBegin(GL_TRIANGLES); getlightcolor(&c,tempmodel->vers[(unsigned int)tempmodel->polys[(unsigned int)index2*3]*3],tempmodel->vers[(unsigned int)tempmodel->polys[(unsigned int)index2*3]*3+2]); glColor3f(c.r,c.g,c.b); glTexCoord2f(tempmodel->texcords[(unsigned int)tempmodel->polys[(unsigned int)index2*3+1]*2],tempmodel->texcords[(unsigned int)tempmodel->polys[(unsigned int)index2*3+1]*2+1]); glVertex3f(x1,y1,z1); getlightcolor(&c,tempmodel->vers[(unsigned int)tempmodel->polys[(unsigned int)(index2+1)*3]*3],tempmodel->vers[(unsigned int)tempmodel->polys[(unsigned int)(index2+1)*3]*3+2]); glColor3f(c.r,c.g,c.b); glTexCoord2f(tempmodel->texcords[(unsigned int)tempmodel->polys[(unsigned int)(index2+1)*3+1]*2],tempmodel->texcords[(unsigned int)tempmodel->polys[(unsigned int)(index2+1)*3+1]*2+1]); glVertex3f(x2,y2,z2); getlightcolor(&c,tempmodel->vers[(unsigned int)tempmodel->polys[(unsigned int)(index2+2)*3]*3],tempmodel->vers[(unsigned int)tempmodel->polys[(unsigned int)(index2+2)*3]*3+2]); glColor3f(c.r,c.g,c.b); glTexCoord2f(tempmodel->texcords[(unsigned int)tempmodel->polys[(unsigned int)(index2+2)*3+1]*2],tempmodel->texcords[(unsigned int)tempmodel->polys[(unsigned int)(index2+2)*3+1]*2+1]); glVertex3f(x3,y3,z3); glEnd(); } }Quote:
Original post by neonoblivion
I don't use "new" because malloc works, and I fear change :)
Quote:
new is for C++ so you should be using it or sticking with C
x1=tempmodel->vers[(unsigned int)tempmodel->polys[(unsigned int)index2*3]*3],typedef struct model{ bool loaded; unsigned long nump,numt,numv,numn; unsigned long * polys; float * vers; float * normals; float * texcords; float x,y,z,xr,yr,zr,xs,ys,zs;} model;struct Model{ unsigned int numIndices; GLuint *indices; GLfloat *vertices; GLfloat *normals; GLfloat *texcoords; GLuint texture;}glEnableClientState(GL_INDEX_ARRAY);glEnableClientState(GL_VERTEX_ARRAY);glEnableClientState(GL_NORMAL_ARRAY);glEnableClientState(GL_TEXTURE_COORD_ARRAY);glIndexPointer(GL_INT,0,normals);glTexCoordPointer(2,GL_FLOAT,0, texcoords);glNormalPointer( GL_FLOAT, 0, normals );glVertexPointer( 3, GL_FLOAT, 0, vertices );glEnable(GL_TEXTURE_2D);glBindTexture(GL_TEXTURE_2D, decal);glDrawElements(GL_TRIANGLES, numIndices, GL_UNSIGNED_INT, 0 );Quote:
Original post by ProPuke
do not misinterpret - new & malloc are not mutually exclusive.
new is an operator used to initialise structure while malloc is a function used to allocate it.
This topic has been locked by a moderator. New replies are not allowed.
With your permission, GameDev.net uses analytics cookies to understand how people use the platform. You can accept analytics or continue with necessary cookies only. Learn more