Hallo zusammen!
Ich bin noch immer an meiner Applikation zum Rendern von grossen Terraingebieten. Mittlerweile habe ich sehr viel an der Performance erhöhen können! Allerdings habe ein Problem bei speziellen Texturen! Es handelt sich um folgenden Code:
Das Gelände setzt sich aus mehreren Texturlayern zusammen. Die Layer 2 - X (von 1 begonnen mit Zählen) haben eine Alphakomponente. Und genau da liegt mein Problem.
Wenn ich nur den untersten Layer rendere und die obigen nicht, so habe ich eine Framerate von 102 FPS. Sobald jedoch ein weitere Layer hinzukommt ist sie auf knapp 20 FPS. Merkwürdigerweise bleibt es dann jedoch auf 20 FPS auch bei 4 Layern.
Es bringt auch keinen wirklich spürbaren Vorteil, wenn ich GL_TEXTURE1_ARB nicht verwende. Der Übergang ist dann einfach breiter (1 Layer -> 102, 2 Layer -> 40, 3 Layer -> 30, 4 Layer -> 20).
Daher stellt sich für mich die Frage: Ist es so wahnsinnig aufwändig diese Texturen zu rendern? Und warum wird die Framerate nicht kleiner, wenn die Layerzahl noch weiter ansteigt und springt von 2 auf 1 so rapide?
Gruss
Cromon
Ich bin noch immer an meiner Applikation zum Rendern von grossen Terraingebieten. Mittlerweile habe ich sehr viel an der Performance erhöhen können! Allerdings habe ein Problem bei speziellen Texturen! Es handelt sich um folgenden Code:
Code:
if(mhdr.nLayers > 1)
{
glActiveTextureARB(GL_TEXTURE0_ARB);
glEnable(GL_TEXTURE_2D);
glActiveTextureARB(GL_TEXTURE1_ARB);
glEnable(GL_TEXTURE_2D);
glDepthMask(GL_FALSE);
}
for(ui32 i = 1; i < mhdr.nLayers && i < sSelectionMgr.maxtex; ++i)
{
glActiveTextureARB(GL_TEXTURE0_ARB);
glBindTexture(GL_TEXTURE_2D, texture[i]);
glActiveTextureARB(GL_TEXTURE1_ARB);
glBindTexture(GL_TEXTURE_2D, alphamap[i - 1]);
glDrawElements(GL_TRIANGLE_STRIP, striplen, GL_UNSIGNED_SHORT, strip);
}
if(mhdr.nLayers > 1)
{
glActiveTextureARB(GL_TEXTURE1_ARB);
glDisable(GL_TEXTURE_2D);
glActiveTextureARB(GL_TEXTURE0_ARB);
glDisable(GL_TEXTURE_2D);
glDepthMask(GL_TRUE);
}
Das Gelände setzt sich aus mehreren Texturlayern zusammen. Die Layer 2 - X (von 1 begonnen mit Zählen) haben eine Alphakomponente. Und genau da liegt mein Problem.
Wenn ich nur den untersten Layer rendere und die obigen nicht, so habe ich eine Framerate von 102 FPS. Sobald jedoch ein weitere Layer hinzukommt ist sie auf knapp 20 FPS. Merkwürdigerweise bleibt es dann jedoch auf 20 FPS auch bei 4 Layern.
Es bringt auch keinen wirklich spürbaren Vorteil, wenn ich GL_TEXTURE1_ARB nicht verwende. Der Übergang ist dann einfach breiter (1 Layer -> 102, 2 Layer -> 40, 3 Layer -> 30, 4 Layer -> 20).
Daher stellt sich für mich die Frage: Ist es so wahnsinnig aufwändig diese Texturen zu rendern? Und warum wird die Framerate nicht kleiner, wenn die Layerzahl noch weiter ansteigt und springt von 2 auf 1 so rapide?
Gruss
Cromon
Zuletzt bearbeitet: