OpenGL: CubeMapping



  • Hi!
    Wie werden CubeMaps intern verwaltet? Für mich stellt sich die Frage, ob unbedingt 6 Texturobjekte notwendig sind, oder ob ich auch nur ein einziges Texturobjekt benötige. Für mich wäre es einfacher über glGenTextures ein Texturobjekt anzulegen, und dann über 6 glTextImage2D-Aufrufe die 6 Seiten der Cubemap zu setzen.

    In etwa so:

    glGenTextures 1, &CubeMap
    
    glBindTexture GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT, CubeMap
    glTexImage2D GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT, ...
    
    glBindTexture GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT, CubeMap
    glTexImage2D GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT, ...
    
    glBindTexture GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT, CubeMap
    glTexImage2D GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT, ...
    
    glBindTexture GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT, CubeMap
    glTexImage2D GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT, ...
    
    glBindTexture GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT, CubeMap
    glTexImage2D GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT, ...
    
    glBindTexture GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT, CubeMap
    glTexImage2D GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT, ...
    

    Und dann beim Rendern:

    glBindTexture GL_TEXTURE_CUBE_MAP_POSITIVE_X_EXT, CubeMap
    glBindTexture GL_TEXTURE_CUBE_MAP_NEGATIVE_X_EXT, CubeMap
    glBindTexture GL_TEXTURE_CUBE_MAP_POSITIVE_Y_EXT, CubeMap
    glBindTexture GL_TEXTURE_CUBE_MAP_NEGATIVE_Y_EXT, CubeMap
    glBindTexture GL_TEXTURE_CUBE_MAP_POSITIVE_Z_EXT, CubeMap
    glBindTexture GL_TEXTURE_CUBE_MAP_NEGATIVE_Z_EXT, CubeMap
    

    Wäre dies so möglich?

    mfg olli

    Edit: Arg, kann ja keiner wissen, dass man unbedingt einen Filter setzen muss, damit das zu rendernde Mesh nicht einfach weiß bleibt. Jedenfalls geht das so wie ich es mir gedacht habe. Man braucht nur ein Texturobjekt. Verstehe nicht, warum die bei NVIDIA Developer usw. mehrere TexturObjekte verwenden.

    Mal schauen, was das mit NormalMap noch auf sich hat.


Anmelden zum Antworten