Willkommen ~Gast!
Registrieren || Einloggen || Hilfe/FAQ || Staff
Probleme mit der Registrierung im Forum? Melde dich unter registerEin Bild.
Autor Beitrag
000
13.05.2004, 18:27
Burcher



Hi
ich programmiere gerade an einer OpenGL Szence. Auf Quads hab ich BMP Texturen gelegt mit 24 Bit. Die Bitmaps sind 122 KB. Es sind 24 Quads als Häuser mit ihnen Belegt und untendrunter liegt noch ein Quad mit eine anderen Textur. Leider läuft die Szene sehr langsam auf einigen Rechnern wenn die Texturen geladen sind.

Kann mir jemand helfen?

--

zum Seitenanfang zum Seitenende Profil || Suche
001
13.05.2004, 18:56
WareWolf



da kann dir vorerst wohl keiner helfen. Mehr Info.
Proggst du in Basic, Turtle, Cxx, Asm ?
einige Codeschnipsel wären für die Profis hier wohl auch nicht schlecht..

--

Sig as a brick ┴┬┴┬┴┬┴┬┴┬┴┬┴
WW

zum Seitenanfang zum Seitenende Profil || Suche
002
13.05.2004, 19:51
Burcher



Hast recht ist etwas dürftig von mir.
Ich Programmie C++ mit Visual 6.

Hier rufe ich die Texture auf

Zitat:
Texture aufruf
int LoadGLTextures(char *filename, int n)
{
int Status=FALSE;

AUX_RGBImageRec *TextureImage[1];

memset(TextureImage, 0, sizeof(void *)*1);

if (TextureImage[0] = LoadBMP(filename))
{
Status=TRUE;

glGenTextures(1, &texture[n]);

glBindTexture(GL_TEXTURE_2D, texture[n]);
glTexImage2D(GL_TEXTURE_2D, 0, 3, TextureImage[0]->sizeX, TextureImage[0]->sizeY, 0, GL_RGB, GL_UNSIGNED_BYTE, TextureImage[0]->data);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MIN_FILTER,GL_LINEAR);
glTexParameteri(GL_TEXTURE_2D,GL_TEXTURE_MAG_FILTER,GL_LINEAR);
}

if (TextureImage[0])
{
if (TextureImage[0]->data)
free(TextureImage[0]->data);

free(TextureImage[0]);
}

return Status;
}

Zitat:
Hier bedinde ich sie ein

...
glBindTexture(GL_TEXTURE_2D, texture[0]);

glBegin(GL_QUADS);
glTexCoord2f(0.0f, 0.0f); glVertex3f(-1.0f, -1.0f, 1.0f);
glTexCoord2f(1.0f, 0.0f); glVertex3f( 1.0f, -1.0f, 1.0f);
glTexCoord2f(1.0f, 1.0f); glVertex3f( 1.0f, 1.0f, 1.0f);
glTexCoord2f(0.0f, 1.0f); glVertex3f(-1.0f, 1.0f, 1.0f);
...

--

zum Seitenanfang zum Seitenende Profil || Suche
003
13.05.2004, 23:18
oxff



1. [code]anstatt [quote]2. Das alleine sollte generell gut laufen, muss woanders liegen. Darf man mal die ganze Render- / Main-Loop sehen?

--

mwcollect - mein Projekt | oxlog - mein blog | happyhardcore.com Stream - gute Musik


Dieser Beitrag wurde am 13.05.2004 um 23:19 von 0xFF bearbeitet.
zum Seitenanfang zum Seitenende Profil || Suche
004
13.05.2004, 23:20
Nicemice
Moderator


Es kann unter Umständen auch an was anderem liegen. Hast du zufällig irgendwelche dynamischen Lichteffekte benutzt oder so ?

--

www.d3opencoop.com - A Doom3 Cooperative Mod

zum Seitenanfang zum Seitenende Profil || Suche
005
17.05.2004, 16:25
Burcher



Hi
danke für euere Vorschläge. Ich habe den Fehlergefunden.
Wenn ich alles in Vertexlistenschreibe geht es schnell. Immerhin habe ich bis zu 30 Vertexe per anhand mit x y z angegeben. Ist woll nicht die beste Methode.

--

zum Seitenanfang zum Seitenende Profil || Suche
006
22.05.2004, 14:17
Prefect



Das stimmt allerdings :)
Generell gilt: Je weniger Funktionsaufrufe, desto besser - insbesondere auch für Statechanges.

Anekdote: Als ich OpenGL mal für 2D-Rendering verwendet habe, habe ich immer - je nach Bedarf - Alphablending an- und ausgeschaltet. Dann habe ich zum Test einfach Alphablending *immer* angelassen, und mich darauf verlassen, dass bei Texturen ohne Alphakanal der Alphakanal immer implizit auf 1 (= keine Transparenz) gesetzt wird. Das Programm lief danach fast doppelt so schnell wie vorher.
Rein prinzipiell wäre es wahrscheinlich noch schneller, alle Renderingcalls in zwei Listen zu sortieren - eine mit Blending und eine ohne Blending, und dann eben einmal umzuschalten. Allerdings funktioniert das nicht, wenn sich die gerenderten Primitiva überlappen.

cu,
Prefect

--

Widelands - Gemütliche Aufbaustrategie, Free Software
Noch ein Blog - Lerne, wie die Welt wirklich ist, aber vergiss niemals, wie sie sein sollte.

zum Seitenanfang zum Seitenende Profil || Suche