I’ve got a problem.
The following FBO code (setup; bind / unbind not shown here) runs perfectly fine on my NVidia video card:
--------------------< CreateFBO( .. ) from Texture object >--------------------
// Set-up texture
Bind(this);
Gl.glTexImage2D(Gl.GL_TEXTURE_2D, 0, Gl.GL_RGBA8, oglWidth, oglHeight, 0, Gl.GL_RGBA, Gl.GL_UNSIGNED_BYTE, null);
this.ApplyTexFlags( .. );
// Create objects
Gl.glGenFramebuffersEXT(1, out this.framebufferID);
Gl.glBindFramebufferEXT(Gl.GL_FRAMEBUFFER_EXT, this.framebufferID);
// Attach texture to FBO
Gl.glFramebufferTexture2DEXT(Gl.GL_FRAMEBUFFER_EXT, Gl.GL_COLOR_ATTACHMENT0_EXT, Gl.GL_TEXTURE_2D, this.textureID, 0);
// Initialize Depthbuffer
if (reqZBuffer)
{
Gl.glGenRenderbuffersEXT(1, out this.depthbufferID);
Gl.glBindRenderbufferEXT(Gl.GL_RENDERBUFFER_EXT, this.depthbufferID);
Gl.glRenderbufferStorageEXT(Gl.GL_RENDERBUFFER_EXT, Gl.GL_DEPTH_COMPONENT, oglWidth, oglHeight);
Gl.glFramebufferRenderbufferEXT(Gl.GL_FRAMEBUFFER_EXT, Gl.GL_DEPTH_ATTACHMENT_EXT, Gl.GL_RENDERBUFFER_EXT, this.depthbufferID);
}
// Status check
<code stuff>
// Unbind all to regularily continue drawing operations
Gl.glBindRenderbufferEXT(Gl.GL_RENDERBUFFER_EXT, 0);
Gl.glBindFramebufferEXT(Gl.GL_FRAMEBUFFER_EXT, 0);
Bind(lastBound);
-----------------------------------------------------------------------------------
--------------------< ApplyTexFlags( .. ) from Texture object >--------------------
if ((this.texflags & TexFlag.EdgeClamp) != 0)
{
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_WRAP_S, Gl.GL_CLAMP_TO_EDGE);
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_WRAP_T, Gl.GL_CLAMP_TO_EDGE);
}
if ((this.texflags & TexFlag.Smooth) != 0)
{
if ((this.texflags & TexFlag.MipMap) != 0)
{
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR_MIPMAP_LINEAR);
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);
Gl.glGenerateMipmapEXT(Gl.GL_TEXTURE_2D);
}
else
{
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_LINEAR);
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_LINEAR);
}
}
else
{
if ((this.texflags & TexFlag.MipMap) != 0)
{
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_NEAREST_MIPMAP_LINEAR);
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_NEAREST);
Gl.glGenerateMipmapEXT(Gl.GL_TEXTURE_2D);
}
else
{
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MIN_FILTER, Gl.GL_NEAREST);
Gl.glTexParameteri(Gl.GL_TEXTURE_2D, Gl.GL_TEXTURE_MAG_FILTER, Gl.GL_NEAREST);
}
}
-----------------------------------------------------------------------------------
As i said: The code runs perfectly fine. But not an ATi cards… why and how can I fix it? I’ve searched via google but found absolutely nothing that helped.