# nehe tutorial - triangle strips

This topic is 2846 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

## Recommended Posts

I would like to make something like fountain: http://img546.imageshack.us/i/84842488.jpg/
But now I have only something that: http://img199.imageshack.us/i/16154892.jpg/

I don't understand why my current fountain is in white colour (it should have many colours) and why it is round - could you help ?

 #define MAX_PARTICLES 1000 float slowdown=2.0f; // Slow Down Particles float xspeed; // Base X Speed (To Allow Keyboard Direction Of Tail) float yspeed; // Base Y Speed (To Allow Keyboard Direction Of Tail) float zoom=-40.0f; // Used To Zoom Out GLuint col; // Current Color Selection GLuint delay; // Rainbow Effect Delay typedef struct // Create A Structure For Particle { bool active; // Active (Yes/No) float life; // Particle Life float fade; // Fade Speed float r; // Red Value float g; // Green Value float b; // Blue Value float x; // X Position float y; // Y Position float z; // Z Position float xi; // X Direction float yi; // Y Direction float zi; // Z Direction float xg; // X Gravity float yg; // Y Gravity float zg; // Z Gravity } particles; // Particles Structure particles particle[MAX_PARTICLES]; // Particle Array (Room For Particle Info) static GLfloat colors[12][3]= // Rainbow Of Colors { {1.0f,0.5f,0.5f},{1.0f,0.75f,0.5f},{1.0f,1.0f,0.5f},{0.75f,1.0f,0.5f}, {0.5f,1.0f,0.5f},{0.5f,1.0f,0.75f},{0.5f,1.0f,1.0f},{0.5f,0.75f,1.0f}, {0.5f,0.5f,1.0f},{0.75f,0.5f,1.0f},{1.0f,0.5f,1.0f},{1.0f,0.5f,0.75f} }; //draw scene: void Render() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glShadeModel(GL_SMOOTH); // Enable Smooth Shading glClearColor(0.0f,0.0f,0.0f,0.0f); // Black Background glClearDepth(1.0f); // Depth Buffer Setup glDisable(GL_DEPTH_TEST); // Disable Depth Testing glEnable(GL_BLEND); // Enable Blending glBlendFunc(GL_SRC_ALPHA,GL_ONE); // Type Of Blending To Perform glHint(GL_PERSPECTIVE_CORRECTION_HINT,GL_NICEST); // Really Nice Perspective Calculations glHint(GL_POINT_SMOOTH_HINT,GL_NICEST); // Really Nice Point Smoothing GLuint tex = LoadTexture("../images/Particle.bmp"); //loading texture using SDL glEnable(GL_TEXTURE_2D); // Enable Texture Mapping glBindTexture(GL_TEXTURE_2D,tex); for (int loop=0;loop<MAX_PARTICLES;loop++) // Initials All The Textures { particle[loop].active=true; // Make All The Particles Active particle[loop].life=1.0f; // Give All The Particles Full Life particle[loop].fade=float(rand()%100)/1000.0f+0.003f; // Random Fade Speed particle[loop].r=colors[loop*(12/MAX_PARTICLES)][0]; // Select Red Rainbow Color particle[loop].g=colors[loop*(12/MAX_PARTICLES)][1]; // Select Red Rainbow Color particle[loop].b=colors[loop*(12/MAX_PARTICLES)][2]; // Select Red Rainbow Color particle[loop].xi=float((rand()%50)-26.0f)*10.0f; // Random Speed On X Axis particle[loop].yi=float((rand()%50)-25.0f)*10.0f; // Random Speed On Y Axis particle[loop].zi=float((rand()%50)-25.0f)*10.0f; // Random Speed On Z Axis particle[loop].xg=0.0f; // Set Horizontal Pull To Zero particle[loop].yg=-0.8f; // Set Vertical Pull Downward particle[loop].zg=0.0f; // Set Pull On Z Axis To Zero } for (int loop=0;loop<MAX_PARTICLES;loop++) // Loop Through All The Particles { if (particle[loop].active) // If The Particle Is Active { float x=particle[loop].x; // Grab Our Particle X Position float y=particle[loop].y; // Grab Our Particle Y Position float z=particle[loop].z+zoom; // Particle Z Pos + Zoom // Draw The Particle Using Our RGB Values, Fade The Particle Based On It's Life glColor4f(particle[loop].r,particle[loop].g,particle[loop].b,particle[loop].life); glBegin(GL_TRIANGLE_STRIP); // Build Quad From A Triangle Strip glTexCoord2d(1,1); glVertex3f(x+0.5f,y+0.5f,z); // Top Right glTexCoord2d(0,1); glVertex3f(x-0.5f,y+0.5f,z); // Top Left glTexCoord2d(1,0); glVertex3f(x+0.5f,y-0.5f,z); // Bottom Right glTexCoord2d(0,0); glVertex3f(x-0.5f,y-0.5f,z); // Bottom Left glEnd(); // Done Building Triangle Strip particle[loop].x+=particle[loop].xi/(slowdown*1000);// Move On The X Axis By X Speed particle[loop].y+=particle[loop].yi/(slowdown*1000);// Move On The Y Axis By Y Speed particle[loop].z+=particle[loop].zi/(slowdown*1000);// Move On The Z Axis By Z Speed particle[loop].xi+=particle[loop].xg; // Take Pull On X Axis Into Account particle[loop].yi+=particle[loop].yg; // Take Pull On Y Axis Into Account particle[loop].zi+=particle[loop].zg; // Take Pull On Z Axis Into Account particle[loop].life-=particle[loop].fade; // Reduce Particles Life By 'Fade' if (particle[loop].life<0.0f) // If Particle Is Burned Out { particle[loop].life=1.0f; // Give It New Life particle[loop].fade=float(rand()%100)/1000.0f+0.003f; // Random Fade Value particle[loop].x=0.0f; // Center On X Axis particle[loop].y=0.0f; // Center On Y Axis particle[loop].z=0.0f; // Center On Z Axis particle[loop].xi=xspeed+float((rand()%60)-32.0f); // X Axis Speed And Direction particle[loop].yi=yspeed+float((rand()%60)-30.0f); // Y Axis Speed And Direction particle[loop].zi=float((rand()%60)-30.0f); // Z Axis Speed And Direction particle[loop].r=colors[col][0]; // Select Red From Color Table particle[loop].g=colors[col][1]; // Select Green From Color Table particle[loop].b=colors[col][2]; // Select Blue From Color Table } } } glFlush(); SwapBuffers(hDC); } 

##### Share on other sites
Can't see anything obvious wrong with it, does your colours get set properly? If you did:

float r = particle[color="#666600"][loop[color="#666600"]].r;
float g = particle[color="#666600"][loop[color="#666600"]].g;
float b = particle[color="#666600"][loop[color="#666600"]].b;
float a = particle[color="#666600"][loop[color="#666600"]].life;
glColor4f[color="#666600"](r[color="#666600"], g[color="#666600"], b[color="#666600"], a[color="#666600"]);

Do you get expected values? try it without using the texture, do you get expected colors?

Also, you might get more help with a more appropriate title (I don't think this is related to triangle strips - though it could be). You could try using GL_TRIANGLES instead of a strip and see if that helps.

glBegin(GL_TRIANGLES);
glVertex3f top right
glVertex3f top left
glVertex3f bottom right
glVertex3f top left
glVertex3f bottom left
glVertex3f bottom right
glEnd();

##### Share on other sites
I had enabled white light and this was the reason white colour but how I can change height fountain, now it is circular...

• ### What is your GameDev Story?

In 2019 we are celebrating 20 years of GameDev.net! Share your GameDev Story with us.

• 11
• 15
• 11
• 11
• 9
• ### Forum Statistics

• Total Topics
634151
• Total Posts
3015817
×