glFrambufferTexture动态颜色附件

glFrambufferTexture dynamic color attachment

本文关键字:颜色 动态 glFrambufferTexture      更新时间:2023-10-16

我试图获得以下代码块

glFramebufferTexture2D(GL_FRAMEBUFFER, GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, texture1, 0);

使用动态颜色附件,例如:GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT2等)

问题是'gl_color_attachment'是'glenum'的一种类型,所以下面的代码不能工作。

std::string temp = "GL_COLOR_ATTACHMENT" + std::to_string(nrComp);

颜色附件枚举是顺序的,因此您可以将nrComp添加到GL_COLOR_ATTACHMENT0的int值并强制转换:

glenum temp = static_cast<glenum>(static_cast<int>(GL_COLOR_ATTACHMENT0)+nrComp);

否则,您可以创建一个附件数组和索引:

glenum[] attachments = {GL_COLOR_ATTACHMENT0, GL_COLOR_ATTACHMENT1, GL_COLOR_ATTACHMENT2,...};
glenum temp = attachments[nrComp];

显然

GLenum temp = GL_COLOR_ATTACHMENT0 + nrComp;

可以工作,因为GLenum只是一个unsigned int,因此可以添加它们。如果他们(在将来)把它变成不连续的

,那就不是万无一失了。