【问题标题】:OpenGL glTexImage2D cube map and width/height parametersOpenGL glTexImage2D 立方体贴图和宽度/高度参数
【发布时间】:2013-11-09 17:00:31
【问题描述】:

我正在尝试使用立方体贴图在 OpenGL 中设置阴影映射,以便为点光源制作阴影。

以下内容向我抛出GL_INVALID_ENUM

for (uint32_t i = 0; i < 6; i++)
    GLCALL(glTexImage2D(GL_TEXTURE_CUBE_MAP_POSITIVE_X + i, 0, GL_DEPTH_COMPONENT32, windowWidth, windowHeight, 0, GL_DEPTH_COMPONENT32, GL_FLOAT, 0));

根据文档,可能是因为这个:

GL_INVALID_ENUM is generated if target is one of the six cube map 2D image targets and the width and height parameters are not equal.

如果宽度/高度不同,我知道它们并不是真正的立方体,但是当我的屏幕分辨率为 1920x1080 或任何其他分辨率时,就会出现问题。

也许我没有理解为函数调用提供什么 - 不是窗口宽度/高度吗?参数应该是什么?

【问题讨论】:

    标签: c++ opengl textures shadow


    【解决方案1】:

    也许我没有理解为函数调用提供什么 - 不是窗口宽度/高度吗?

    您认为窗口分辨率如何影响纹理大小是我无法理解的。您通常使用帧缓冲区对象渲染阴影映射深度图,因此窗口尺寸无关紧要。

    参数应该是什么?

    对于立方体贴图:立方体贴图纹理的边长。

    【讨论】:

    • 帧缓冲区存储将在屏幕上渲染的最终图像(颜色映射?),因此纹理大小不应该与窗口分辨率匹配吗?另外,如果不是,哪种值适合立方体贴图纹理的大小?
    • @KaiserJohaan:没有 帧缓冲区。有 a 窗口帧缓冲区(带有窗口大小),然后有用户定义的帧缓冲区对象,它们不在屏幕上,大小由您选择。不,即使纹理稍后可能会渲染到屏幕上(这不一定会发生),它也可能会严重失真或只是放大或缩小。所以不,纹理大小和窗口大小之间绝对没有强制对应关系。至于阴影贴图:纹理大小是任意的,只取决于您对质量的要求:更高的阴影纹理分辨率 = 更高的质量
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-01
    • 1970-01-01
    相关资源
    最近更新 更多