glTexSubImage2D mit GL_INT



  • Hallo,

    ich habe da ein kleines Problem .... chen.

    Undzwar dachte ich eigentlich dass wenn man die OpenGL Funktion "glTexSubImage2D" mit GL_INT anstatt GL_UNSIGNED_BYTE aufruft auch Farbwerte von 0 bis 255 nehmen muss. Aber dem scheint nicht so zu sein.

    In welchem Bereich müssen die Farbwerte denn dann liegen?



  • GL_UNSIGNED_BYTE? Wo?
    Also die offizielle Doku sagt:

    void glTexSubImage2D(	GLenum target, 
     	                GLint level, 
     	                GLint xoffset, 
     	                GLint yoffset, 
     	                GLsizei width, 
     	                GLsizei height, 
     	                GLenum format, 
     	                GLenum type, 
     	                const GLvoid * data);
    


  • GL_UNSIGNED_BYTE? Wo?
    Also die offizielle Doku sagt...

    Dann lies doch auch den Rest.

    GL_INT anstatt GL_UNSIGNED_BYTE [...] In welchem Bereich müssen die Farbwerte denn dann liegen?

    Der Wertebereich entspricht dem Datentyp. Mir ist aber keine Hardware bekannt die vorzeichenbehaftetes 32Bit-Integer pro Farbkanal unterstuetzt.
    Wenn Du unbedingt mehr Praezision brauchst nimm GL_UNSIGNED_SHORT oder GL_FLOAT.



  • Praezision ist in meinem Fall gar nicht das Problem.
    Ich habe einen SoftwareRenderer geschrieben, der das Ergebniss am Ende mit einer OpenGL Texture anzeigt. Den PixelBuffer hatte ich zuvor in Form von floats, die sind aber bekanntermaßen auf den CPUs langsamer als integer daher wollte ich das auch Ganzzahlige Werte umstellen.
    Aber dann nehem ich eben GL_UNSIGNED_BYTE, das sollte auch immer noch schneller sein als floats.
    Danke 🙂


Log in to reply