Draw 2D mesh in iphone using openGL

Hello,
Here is my code.

// This function defines the vertices of the mesh/grid
-(void)populateMesh{
	verticalDivisions = kVerticalDivisions;
	horizontalDivisions = kHorisontalDivisions;
	
	unsigned int verticesArrsize = (kVerticalDivisions * ((2 + kHorisontalDivisions * 2) * 3));
	unsigned int textureCoordsArraySize = kVerticalDivisions * ((2 + kHorisontalDivisions * 2) * 2);
	verticesArr = (GLfloat *)malloc(verticesArrsize * sizeof(GLfloat));
	textureCoordsArr = (GLfloat*)malloc(textureCoordsArraySize * sizeof(GLfloat));
	if (verticesArr == NULL) {
		NSLog(@"verticesArr = NULL!");
	}
	
	float height = kWindowHeight/verticalDivisions;
	float width = kWindowWidth/horizontalDivisions;
	int i,j;
	count = 0;
	for (j=0; j<verticalDivisions; j++) {
		for (i=0; i<=horizontalDivisions; i++, count+=6) { //2 vertices each time...
			float currX = i * width;
			float currY = j * height;
			verticesArr[count] = currX;
			verticesArr[count+1] = currY + height;
			verticesArr[count+2] = 0.0f;
			
			verticesArr[count+3] = currX;
			verticesArr[count+4] = currY;
			verticesArr[count+5] = 0.0f;
		} 
	}
	
	
	float xIncrease = 1.0f/horizontalDivisions;
	float yIncrease = 1.0f/verticalDivisions;
	
	int x,y;
	//int elements;
	count = 0;
	
	for (y=0; y<verticalDivisions; y++) {
		for (x=0; x<horizontalDivisions+1; x++, count+=4) {
			float currX = x *xIncrease;
			
			float currY = y * yIncrease;
			textureCoordsArr[count] = (float)currX;
			textureCoordsArr[count+1] = (float)currY + yIncrease;
			
			textureCoordsArr[count+2] = (float)currX;
			textureCoordsArr[count+3] = (float)currY;
		}
	}
	
//	int cnt;
//	int cnt = 0;
	NSLog(@"expected %i vertices, and %i vertices were done",(verticalDivisions * ((2 + horizontalDivisions*2 ) * 2) ) , count );
}


//DrawView Function

- (void)drawView:(GLView*)view{
    static GLfloat rot = 0.0;
    glColor4f(0.0, 0.0, 0.0, 0.0);
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
    
    glEnableClientState(GL_VERTEX_ARRAY);
    glEnableClientState(GL_TEXTU
    glLoadIdentity();
    glTranslatef(0.0, 0.0, -1.0);
    glRotatef(rot, 1.0, 1.0, 1.0);
    
    glBindTexture(GL_TEXTURE_2D, texture[0]);
    glVertexPointer(3, GL_FLOAT, 0, vertices);
	glTexCoordPointer(3, GL_FLOAT, 0, textureCoordsArr);
	glPushMatrix();{
    int i;
	for (i=0; i<verticalDivisions; i++) {
		glDrawArrays(GL_LINE_STRIP, i*(horizontalDivisions*2+2), horizontalDivisions*2+2);
	}
	}glPopMatrix();
    glDisableClientState(GL_VERTEX_ARRAY);
    glDisableClientState(GL_TEXTURE_COORD_ARRAY);

}

and finally my setupView function


-(void)setupView:(GLView*)view
{
	const GLfloat zNear = 100.0, zFar = 1, fieldOfView = 100.0; 
	GLfloat size; 
	glEnable(GL_DEPTH_TEST);
	glMatrixMode(GL_PROJECTION); 
	size = zNear * tanf(DEGREES_TO_RADIANS(fieldOfView) / 1.0); 
	
	
	CGRect rect = view.bounds; 
	NSLog(@"%f, %f %f", rect.size.height, rect.size.width, size);
	glFrustumf(-8.0f, 8.0f, -12.0f, 12.0f, -8.0f, 20.0f);
	glViewport(0, 0, rect.size.width, rect.size.height);  
	glMatrixMode(GL_MODELVIEW);
      // Turn necessary features on
    glEnable(GL_TEXTURE_2D);
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_SRC_ALPHA);  
    glEnable(GL_LIGHTING);
    
    // Turn the first light on
    glEnable(GL_LIGHT0);
    
    // Define the ambient component of the first light
    static const Color3D light0Ambient[] = {{0.4, 0.4, 0.4, 1.0}};
    glLightfv(GL_LIGHT0, GL_AMBIENT, (const GLfloat *)light0Ambient);
    
    // Define the diffuse component of the first light
    static const Color3D light0Diffuse[] = {{0.8, 0.8, 0.8, 1.0}};
    glLightfv(GL_LIGHT0, GL_DIFFUSE, (const GLfloat *)light0Diffuse);
    static const Vertex3D light0Position[] = {{10.0, 10.0, 10.0}};
	glLightfv(GL_LIGHT0, GL_POSITION, (const GLfloat *)light0Position); 
	[self populateMesh];
}


I cant paste the image over here else I could show you what i am getting.

My aim is to create a 2D mesh. But I am getting something different.
Please help me asap.

This topic was automatically closed 183 days after the last reply. New replies are no longer allowed.