glFrambufferTexture动态颜色附件

时间:2015-08-17 11:16:10

标签: c++ opengl

我正在尝试获取以下代码块

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);

2 个答案:

答案 0 :(得分:2)

颜色附件枚举是连续的,因此您只需将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];

答案 1 :(得分:0)

显然

GLenum temp = GL_COLOR_ATTACHMENT0 + nrComp;

有效,因为GLenum只是一个unsigned int,因此可以添加它们。 如果他们以某种方式(将来)使它不连续,那就不是那么万无一失了