GLdc/GL/framebuffer.c
2018-05-20 16:44:16 +01:00

73 lines
1.6 KiB
C

#include <stdio.h>
#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) {
}