#include #include "private.h" typedef struct { GLuint index; GLuint texture_id; GLboolean is_complete; } FrameBuffer; static FrameBuffer* ACTIVE_FRAMEBUFFER = NULL; static NamedArray FRAMEBUFFERS; void initFramebuffers() { named_array_init(&FRAMEBUFFERS, sizeof(FrameBuffer), 32); } void APIENTRY glGenFramebuffersEXT(GLsizei n, GLuint* framebuffers) { TRACE(); while(n--) { GLuint id = 0; FrameBuffer* fb = (FrameBuffer*) named_array_alloc(&FRAMEBUFFERS, &id); fb->index = id; fb->is_complete = GL_FALSE; fb->texture_id = 0; *framebuffers = id; framebuffers++; } } void APIENTRY glDeleteFramebuffersEXT(GLsizei n, const GLuint* framebuffers) { TRACE(); while(n--) { FrameBuffer* fb = (FrameBuffer*) named_array_get(&FRAMEBUFFERS, *framebuffers); if(fb == ACTIVE_FRAMEBUFFER) { ACTIVE_FRAMEBUFFER = NULL; } named_array_release(&FRAMEBUFFERS, *framebuffers++); } } void APIENTRY glBindFramebufferEXT(GLenum target, GLuint framebuffer) { TRACE(); if(framebuffer) { ACTIVE_FRAMEBUFFER = (FrameBuffer*) named_array_get(&FRAMEBUFFERS, framebuffer); } else { ACTIVE_FRAMEBUFFER = NULL; } } void APIENTRY glFramebufferTexture2DEXT(GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level) { } void APIENTRY glGenerateMipmapEXT(GLenum target) { } GLenum APIENTRY glCheckFramebufferStatusEXT(GLenum target) { } GLboolean APIENTRY glIsFramebufferEXT(GLuint framebuffer) { }