我正在尝试获取以下代码块
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);
答案 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,因此可以添加它们。 如果他们以某种方式(将来)使它不连续,那就不是那么万无一失了