Fehler in glGenTextures



  • Hi,
    woran kann es liegen, dass glGenTextures nichts tut?

    glEnable(GL_TEXTURE_2D);
    glGenTextures(1, &this->m_uiTextureID);
    

    die TextureID Variable enthält vor und nach dem Aufruf den gleichen Wert, egal wie sie initialisiert wurde.

    Danke

    M.T.



  • Hat das einen bestimmten Grund mit dem "this->" ? 😕



  • Vielleicht, den, dass der Code in ner Klasse steht 😉

    M.T.



  • ha, aber da brauchst du das this ja auch nicht, ich hab sowieso noch nie verstanden wieso man bei soetwas den this Pointer verwendet soll:

    void CKlasse:Setblabla(float blabla)
    {
    mBlabla = blabla;
    }

    wieso sollte man
    void CKlasse:Setblabla(float blabla)
    {
    this->mBlabla = blabla;
    }
    schreiben ?!!



  • Erhöht IMO die Lesbarkeit des Codes ... hat aber nichts mit meinem Problem zu tun.

    M.T.


  • Mod

    this-> suggeriert, dass es eine member der klasse ist
    m_ suggeriert, dass es eine member der klasse ist

    lesbarkeit wird eigentlich nicht größer, denn die namensnennung ist aussagefähig genug... eigentlich vermindert es die lesbarkeit, weil sich alle anderen fragen "wozu macht der denn das? der wird doch nen wichtigen grund haben..."

    und dein problem könnte damit zusammenhängen, dass du vielleicht glGenTextures ganz am anfang beim programmstart aufrufst...

    rapso->greets();



  • Nein, eigentlich erst vor dem ersten Rendern.

    Hier die Ladefunktion:

    G3D_RGB *pData;
    	UINT uiWidth;
    	UINT uiHeight;
    
    	if(lstrcmp(pcPath + lstrlen(pcPath) - 4, TEXT(".bmp")) == 0)
    	{
    		if(!this->LoadDataBmp(pcPath, &pData, &uiWidth, &uiHeight))
    			return FALSE;
    	}
    	else
    	{
    		return FALSE;
    	}
    	//------------------
    
    	glEnable(GL_TEXTURE_2D);
    
    	glGenTextures(1, &this->m_uiTextureID);
    	//--------------------
    
    	//Die Textur erstellen
    	glBindTexture(GL_TEXTURE_2D, this->m_uiTextureID);
    	glTexImage2D(GL_TEXTURE_2D, 0, 3, uiWidth, uiHeight, 0, GL_RGB, GL_UNSIGNED_BYTE, pData);
    	//--------------------
    
    	//Einstellungen der Textur anpassen
    	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER,GL_LINEAR);
    	glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER,GL_LINEAR);
    	glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP);
        glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP);
    	//---------------------------------
    

    M.T.


  • Mod

    sicher dass ein initialisierter rendercontext gesetzt ist?

    rapso->greets();



  • Ich kann rendern, doch ist alles ohne Textur ...

    M.T.



  • Haste auch brav die Texturkoordinaten übergeben ? 😃



  • Cpp_Junky schrieb:

    Haste auch brav die Texturkoordinaten übergeben ? 😃

    Haha 🙄 - natürlich ...

    M.T.


  • Mod

    haste auch die neusten treiber drauf? manche alten ATI treiber haben den befehl ignoriert 😃

    rapso->greets();



  • Poste mal die Rendering-Funktion



  • rapso schrieb:

    haste auch die neusten treiber drauf? manche alten ATI treiber haben den befehl ignoriert 😃

    Ich hab den neuesten nVidia Treiber drauf und außerdem funktionieren alle anderen OpenGL Spiele.

    Hier dann also die Renderfunktion, obwohl die eigentlich nichts damit zu tun hat, dass die Textur gar nicht erstellt wird:

    //...
    glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT | GL_STENCIL_BUFFER_BIT);
    
    	glBegin(GL_TRIANGLES); // Drawing Using Triangles
    
    	for(int y = -5; y <= 5; y++)
    	{
    		for(int x = -5; x <= 5; x++)
    		{
    			glTexCoord2f(0.0f, 0.0f);
    			glVertex3f(0.0f + x, 0.0f + y, 0.0f);
    			glTexCoord2f(0.0f, 1.0f);
    			glVertex3f(0.0f + x,1.0f + y, 0.0f);
    			glTexCoord2f(1.0f, 0.0f);
    			glVertex3f( 1.0f + x,0.0f + y, 0.0f); 
    
    			glTexCoord2f(0.0f, 1.0f);
    			glVertex3f(0.0f + x, 1.0f + y, 0.0f);
    			glTexCoord2f(1.0f, 1.0f);
    			glVertex3f(1.0f + x,1.0f + y, 0.0f);
    			glTexCoord2f(1.0f, 0.0f);
    			glVertex3f( 1.0f + x,0.0f + y, 0.0f);
    		}
    	}
    
    	glEnd();
    //...
    

    M.T.



  • Hat sich erledigt - jetzt funktionierts ... danke noch mal.

    M.T.


  • Mod

    Manuel schrieb:

    Hat sich erledigt - jetzt funktionierts ... danke noch mal.

    M.T.

    verrate uns doch mal wieso das nicht wollte 😃

    rapso->greets();



  • Aber gerne 😉

    Mein Programm unterstützt intern mehrere Fenster. Diese waren auch alle erstellt (mit Rendercontext), doch ich hab die Funktion zum einsetzen des RC erst beim ersten Rendern aufgefufen.

    M.T.


  • Mod

    rapso schrieb:

    und dein problem könnte damit zusammenhängen, dass du vielleicht glGenTextures ganz am anfang beim programmstart aufrufst...

    rapso->greets();

    rapso schrieb:

    sicher dass ein initialisierter rendercontext gesetzt ist?
    rapso->greets();

    und da sag ich das noch zwei mal... ich möcht nicht wissen wie oft ich diesen fehler schon gesehen habe

    bleib einfach hier im forum bis der nächste ein glgentextures prob hat, und löse es 😃

    rapso->greets();



  • Der Fehler wäre in NeHe Style einfach zu finden gewesen ... aber wie schon geschrieben, war das bei mir für mehrere Viewports/Fenster in Klassen versteckt 😉

    M.T.


Anmelden zum Antworten