for (int i = 0; i < 5; i++)
{
tex = Map[i];
glBindTexture(GL_TEXTURE_2D, texture[1]);
glBegin(GL_QUADS);
glTexCoord2f(1.0f,0.0f); glVertex3f(pos1+i,0.2f,0.0f);
glTexCoord2f(1.0f,1.0f); glVertex3f(pos2+i,-0.2f,0.0f);
glTexCoord2f(0.0f,1.0f); glVertex3f(pos3+i,-0.2f,0.0f);
glTexCoord2f(0.0f,0.0f); glVertex3f(pos4+i,0.2f,0.0f);
glEnd();
}
2D Scroller Problem
I''m trying to write a 2D scroller-type game, and I''m hoping someone here could help me out with a problem that I can''t seem to solve that would help me out immensely.
In the code I''m posting below, the program basically loops through an array (called "Map") and returns the value of the current entry in the array. This number is then used to bind a texture to a quad. Now, my problem is this: I can''t seem to figure out how to draw a row of quads. Right now, it just draws one long quad. I''ve attempted to try some different things (such as incrementing each vertex''s X value by 1), but I can''t seem to make it draw 5 (the size of the array) seperate quads in a row. I know the solution is simple, but I have no clue how to do this. ANy help would be appreciated!
hmmm i''m only a newbie but this is what i would do.....
try putting in a glTranslatef(i,0,-30) in your loop.
then just keep the vertex commands something like
glVertex3f(0.0,1.0,0.0); and so on
this is something i have recently discovered and i think it si the easiest way to go.
example from my tiling program
this may not be exactly what you want but it hopefully will give u some ideas.....
Werdy666
My Homepage : http://werdy666.20megsfree.com/
try putting in a glTranslatef(i,0,-30) in your loop.
then just keep the vertex commands something like
glVertex3f(0.0,1.0,0.0); and so on
this is something i have recently discovered and i think it si the easiest way to go.
example from my tiling program
for (int x=0;x < 28;x++) { for (int y=0;y<25;y++) { glLoadIdentity(); glTranslatef(-16.0f+x,12.0f-y,-30.0f); glBindTexture(GL_TEXTURE_2D, texture[(mapdata[x][y])].texID); glBegin(GL_QUADS); glTexCoord2d(0.0,1.0); glVertex3f(-0.5f, 0.5f, 0.0f); glTexCoord2d(1.0,1.0); glVertex3f(0.5f, 0.5f, 0.0f); glTexCoord2d(1.0,0.0); glVertex3f(0.5f, -0.5f, 0.0f); glTexCoord2d(0.0,0.0); glVertex3f(-0.5f, -0.5f, 0.0f); glEnd(); } }
this may not be exactly what you want but it hopefully will give u some ideas.....
Werdy666
My Homepage : http://werdy666.20megsfree.com/
Assuming you are drawing rectangles, are:
pos1 = pos2,
pos3 = pos4,
and pos1, pos2 = pos3 + 1, pos4 + 1 ?
Using variables like these should draw 5 contiguous rectangles using your code.
pos1 = pos2,
pos3 = pos4,
and pos1, pos2 = pos3 + 1, pos4 + 1 ?
Using variables like these should draw 5 contiguous rectangles using your code.
I am not sure if this is what you are looking for, but you might want to try my function, that draws a test floor, with different colors. My z and y axes are inverted, so you might want to invert them, if your y points up, and z points inside the monitor.
This draws a 160x160 floor, so you might want to change the values in the fors.
Which is worse? Ignorance or apathy? Who knows?! Who cares?!
[edited by - Raduprv on October 23, 2002 5:37:40 PM]
This draws a 160x160 floor, so you might want to change the values in the fors.
draw_some_floor(){ int x,y; int y_scaled,x_scaled; int terrain_scale; terrain_scale=1; glDisable(GL_TEXTURE_2D); glBegin(GL_QUADS); //glColor3f(1.0f,1.0f,1.0f); for(y=-80;y<80;y++) { y_scaled=y*terrain_scale; for(x=-80;x<80;x++) { if(y%2==0) { if(x%3==0)glColor3f(1.0f,1.0f,1.0f); else if(x%3==1)glColor3f(1.0f,0.0f,0.0f); else if(x%3==2)glColor3f(0.0f,0.0f,1.0f); } else { if(x%3==0)glColor3f(0.0f,0.0f,0.0f); else if(x%3==1)glColor3f(0.0f,1.0f,1.0f); else if(x%3==2)glColor3f(0.0f,1.0f,0.0f); } x_scaled=x*terrain_scale; glVertex3f((float)x_scaled,(float)y_scaled+terrain_scale, 0.0f); glVertex3f((float)x_scaled,(float)y_scaled, 0.0f); glVertex3f((float)x_scaled+terrain_scale, (float)y_scaled,0.0f); glVertex3f((float)x_scaled+terrain_scale, (float)y_scaled+terrain_scale,0.0f); } } glEnd();}
Which is worse? Ignorance or apathy? Who knows?! Who cares?!
[edited by - Raduprv on October 23, 2002 5:37:40 PM]
If you are seeing one big quad then you are "zoomed in" too much.
Inside the loop, before you draw the poly, use glTranslatef to go deeper into the screen.
Inside the loop, before you draw the poly, use glTranslatef to go deeper into the screen.
This topic is closed to new replies.
Advertisement
Popular Topics
Advertisement