Vart ritar du den?
testa med
glTranslatef(0.0f, 0.0f, -10.0f);
innan glBegin() så att du inte ritar den bakom "ögats" position!
7 svar · 272 visningar · startad av puhbjörn
Jag håller på med lite Open GL programmering i C++ och har råkat ut för ett problem när jag ska göra en roterande 3d pyramid. Problemet är att när jag kompilerat programmet och ska kolla hur det ser ut så blir det ingen pyramid. Så här ser koden ut:
glBegin(GL_TRIANGLES); // Start Drawing The Pyramid
glColor3f(1.0f,0.0f,0.0f); // Red
glVertex3f( 0.0f, 1.0f, 0.0f); // Top Of Triangle (Front)
glColor3f(0.0f,1.0f,0.0f); // Green
glVertex3f(-1.0f,-1.0f, 1.0f); // Left Of Triangle (Front)
glColor3f(0.0f,0.0f,1.0f); // Blue
glVertex3f( 1.0f,-1.0f, 1.0f); // Right Of Triangle (Front)
glColor3f(1.0f,0.0f,0.0f); // Red
glVertex3f( 0.0f, 1.0f, 0.0f); // Top Of Triangle (Right)
glColor3f(0.0f,0.0f,1.0f); // Blue
glVertex3f( 1.0f,-1.0f, 1.0f); // Left Of Triangle (Right)
glColor3f(0.0f,1.0f,0.0f); // Green
glVertex3f( 1.0f,-1.0f, -1.0f); // Right Of Triangle (Right)
glColor3f(1.0f,0.0f,0.0f); // Red
glVertex3f( 0.0f, 1.0f, 0.0f); // Top Of Triangle (Back)
glColor3f(0.0f,1.0f,0.0f); // Green
glVertex3f( 1.0f,-1.0f, -1.0f); // Left Of Triangle (Back)
glColor3f(0.0f,0.0f,1.0f); // Blue
glVertex3f(-1.0f,-1.0f, -1.0f); // Right Of Triangle (Back)
glColor3f(1.0f,0.0f,0.0f); // Red
glVertex3f( 0.0f, 1.0f, 0.0f); // Top Of Triangle (Left)
glColor3f(0.0f,0.0f,1.0f); // Blue
glVertex3f(-1.0f,-1.0f,-1.0f); // Left Of Triangle (Left)
glColor3f(0.0f,1.0f,0.0f); // Green
glVertex3f(-1.0f,-1.0f, 1.0f); // Right Of Triangle (Left)
glEnd();
Någon som vet vad som är fel ?
Här finns programmet: http://www.websamba.com/plutt/files/spel.exe
Vart ritar du den?
testa med
glTranslatef(0.0f, 0.0f, -10.0f);
innan glBegin() så att du inte ritar den bakom "ögats" position!
När jag gjort så ser jag ingenting.
Kan du visa all kod? Det kan ju vara så att det är fel någon annastans! Eller är det nehe koden?
Funkar det om du bara ritar en quad?
testa med den här koden i rita funktionen, fugerar inte det är det någonting som är fel med den övriga koden!
void DrawScene()
{
glClear(GL_COLOR_BUFFER_BIT or GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(0.0f, 0.0f, -10.0f);
glColor3f(1.0f, 0.0f, 0.0f);
glBegin(GL_QUADS);
glVertex3f( 2.0f, -2.0f, 0.0f);
glVertex3f(-2.0f, -2.0f, 0.0f);
glVertex3f(-2.0f, 2.0f, 0.0f);
glVertex3f( 2.0f, 2.0f, 0.0f);
glEnd();
}
Kör en glFlush(); efter glEnd(); också, så tvingar du openGL att rita ut. Så det inte ligger kvar i någon buffer alltså.
Alpha II det blir en fin röd quad som täcker hela ytan om jag använder din kod och tar bort glTranslatef(0.0f, 0.0f, -10.0f);.
Pyramid koden kommer från nehe men resten kommer från någon annan tutorial på gamedev.
Och sen så är ju inte problemet att det inte syns någonting utan att pyramiden inte får någon botten och att den verkar ha fyra sidor.
jaha!
men det beror på att du ritar en pryramid utan botton, eftersom i nehes tutorial syns aldrig botten och den behövs aldrig ritas, det står på sidan!
lägg till för bottnen:
glBegin(GL_QUADS);
glVertex3f( 1.0f, -1.0f, -1.0f );
glVertex3f(-1.0f, -1.0f, -1.0f );
glVertex3f(-1.0f, -1.0f, 1.0f );
glVertex3f( 1.0f, -1.0f, 1.0f );
glEnd();