我有一个测试应用程序,它提取以下内容:

左三角形通过以下方式绘制:
GL.glBegin(GL.GL_TRIANGLES);
{
for (int i = 0; i < 50; i++)
{
GL.glColor4d(rand.NextDouble(), rand.NextDouble(), rand.NextDouble(), rand.NextDouble());
GL.glVertex2d(rand.NextDouble(), rand.NextDouble());
GL.glColor4d(rand.NextDouble(), rand.NextDouble(), rand.NextDouble(), rand.NextDouble());
GL.glVertex2d(rand.NextDouble(), rand.NextDouble());
GL.glColor4d(rand.NextDouble(), rand.NextDouble(), rand.NextDouble(), rand.NextDouble());
GL.glVertex2d(rand.NextDouble(), rand.NextDouble());
}
}
GL.glEnd();
Run Code Online (Sandbox Code Playgroud)
右三角形绘制为:
GL.glBindTexture(GL.GL_TEXTURE_2D, texture);
GL.glBegin(GL.GL_QUADS);
{
GL.glTexCoord2f(0, 1); GL.glVertex2f(0, 1);
GL.glTexCoord2f(0, 0); GL.glVertex2f(0, 0);
GL.glTexCoord2f(1, 0); GL.glVertex2f(1, 0);
GL.glTexCoord2f(1, 1); GL.glVertex2f(1, 1);
}
GL.glEnd();
Run Code Online (Sandbox Code Playgroud)
纹理通过FBO渲染.
我很难让GL_TEXTURE_2D和GL_TEXTURE_3D一起玩.一切都很好,直到我取消注释以下代码部分:
GL.glEnable(GL.GL_TEXTURE_2D);
// GL.glEnable(GL.GL_TEXTURE_3D);
Run Code Online (Sandbox Code Playgroud)
结果我得到以下图像(2D纹理停止工作):

有没有办法让2D和3D纹理协同工作?我需要通过FBO将3D纹理渲染成2D纹理.有没有办法做到这一点?
using System;
using System.IO;
using System.Linq;
using System.Text;
using System.Drawing;
using System.Threading; …Run Code Online (Sandbox Code Playgroud)