zeichenprobleme mit ogl



  • folgende methode einer klasse Sprite zeichnet das gewollte rechteck nicht:

    void Sprite::draw()
    {
    	glLoadIdentity();
            glBegin(GL_QUADS);
    	glTexCoord2i(0,0); glVertex3i(m_x,m_y,m_z);
    	glTexCoord2i(1,0); glVertex3i(m_x+m_bitmap->w,m_y,m_z);
    	glTexCoord2i(1,1); glVertex3i(m_x+m_bitmap->w,m_y+m_bitmap->h,m_z);
    	glTexCoord2i(0,1); glVertex3i(m_x,m_y+m_bitmap->h,m_z);
    	glEnd();
    }
    
    main.cpp
    [cpp]
    int main(int argc,char *argv[])
    {
            GLApp app(1024,768);
    	Sprite somesprite("logo.bmp",0,0);
    	SDL_Event event;
    	bool running=true;
    	Uint8 *keys;
    	while(running)
    	{
    		app.clear();
    		keys=SDL_GetKeyState(0);
    		somesprite.draw();
    		while(SDL_PollEvent(&event))
    		{
    			switch(event.type)
    			{
    			case SDL_QUIT:
    				running=false;
    				break;
    			}
    		}
    		app.Update();
    	}
    	glDeleteTextures(1, &texPicture);
    	return 0;
    }
    

    glapp erzeugen funktioniert(fenster wird aufgemacht, opengl wird initialisiert),
    wenn ich sachen mit "offenen" funktionen zeichne funktioniert das. beispiel:

    void draw()
    {
    	glLoadIdentity();
    	glTranslatef(xpos,0.0f,zoom);
    	glRotatef(rot,0.0f,1.0f,0.0f);
    	glEnable(GL_TEXTURE_2D);
    	glBindTexture(GL_TEXTURE_2D,texPicture);
    
    	glEnable(GL_BLEND);
    	glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);
    
    	glColor4f(1.0f,1.0f,1.0f,0.7f);
    
    	glBegin(GL_QUADS);
    	 glTexCoord2f(0,0); glVertex3f(-1.0f,1.0f,0.0f);
    	glTexCoord2f(1,0); glVertex3f(1.0f,1.0f,0.0f);
    	glTexCoord2f(1,1); glVertex3f(1.0f,-1.0f,0.0f);
    	glTexCoord2f(0,1); glVertex3f(-1.0f,-1.0f,0.0f);
    	glEnd();
    
    	glTranslatef(1.0f,1.0f,2.0f);
    
    	glBegin(GL_QUADS);
    	glTexCoord2f(0,0); glVertex3i(-1,1,0);
    	glTexCoord2f(1,0); glVertex3i(1,1,0);
    	glTexCoord2f(1,1); glVertex3i(1,-1,0);
    	glTexCoord2f(0,1); glVertex3i(-1,-1,0);
    	glEnd();
    
    };
    

    hat einer ne ahnung wieso somesprite.draw() nicht klappt?



  • Vielleicht, weil in Deiner Draw-Funktion das glBegin fehlt?



  • nein das ist drin hab ich wohl beim copy und pasetn irgendwie weggelassen °_°



  • Möglichkeiten, warum in OpenGL das Zeichnen bei mir schon nicht klappte:

    -Punkte in außerhalb des sichtbaren Bereichs (indem ich mir falsch merkte, welchen Koordinatensystembereich mein Fenster hatte)

    -Alpha so gesetzt, dass der Bereich transparent war

    -erst gar keine Farbe gesetzt

    Hier kann ich nur fragen: funktionierte das Zeichnen in einer früheren Version? wenn ja, versuche herauszufinden, was sich seitdem verändert hat und das Zeichnen verhindert (ist nur so ein allgemeiner Tipp aus meiner Programmiererfahrung).



  • ok problem hat sich gelöst, war dein zweites (koordinaten falsch gesetzt /gemerkt)

    danke dafür


Anmelden zum Antworten