gambas-source-code/gb.opengl/src/framebufferobject.c
Benoît Minisini 78440de68d [DEVELOPMENT ENVIRONMENT]
* NEW: Add an "add everything to repository" menu entry.
* BUG: The user font config file is "~/config/fonts.conf", not 
  "~/config/.fonts.conf".

[GB.FORM]
* NEW: The Balloon background color is now the system tooltip background 
  color.

[GB.GTK]
* NEW: Ignore trailing spaces in font description elements: you can use 
  Font["Arial  , 12, Bold "] now.

[GB.OPENGL]
* BUG: Fix the missing "gl" prefix on two OepnGL calls.

[GB.QT4]
* NEW: Ignore trailing spaces in font description elements: you can use 
  Font["Arial  , 12, Bold "] now.



git-svn-id: svn://localhost/gambas/trunk@6209 867c0c6c-44f3-4631-809d-bfa615b0a4ec
2014-03-29 18:21:56 +00:00

194 lines
No EOL
5 KiB
C

/***************************************************************************
framebufferobject.c
(c) 2011 Laurent Carlier <lordheavy@users.sourceforge.net>
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2, or (at your option)
any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
MA 02110-1301, USA.
***************************************************************************/
#define __FBO_C
#include "GL.h"
BEGIN_METHOD(GLBINDFRAMEBUFFEREXT, GB_INTEGER target; GB_INTEGER framebuffer)
glBindFramebufferEXT(VARG(target), VARG(framebuffer));
END_METHOD
BEGIN_METHOD(GLBINDRENDERBUFFEREXT, GB_INTEGER target; GB_INTEGER renderbuffer)
glBindRenderbufferEXT(VARG(target), VARG(renderbuffer));
END_METHOD
BEGIN_METHOD(GLCHECKFRAMEBUFFERSTATUSEXT, GB_INTEGER target)
GB.ReturnInteger(glCheckFramebufferStatusEXT(VARG(target)));
END_METHOD
BEGIN_METHOD(GLDELETEFRAMEBUFFERSEXT, GB_OBJECT buffers)
GB_ARRAY iArray = (GB_ARRAY) VARG(buffers);
int i,count = GB.Array.Count(iArray);
GLuint buffer[1];
if (count<=0)
return;
for (i=0;i<count; i++)
{
buffer[0]=*((GLuint *)GB.Array.Get(iArray,i));
glDeleteFramebuffersEXT(1, buffer);
}
END_METHOD
BEGIN_METHOD(GLDELETERENDERBUFFERSEXT, GB_OBJECT buffers)
GB_ARRAY iArray = (GB_ARRAY) VARG(buffers);
int i,count = GB.Array.Count(iArray);
GLuint buffer[1];
if (count<=0)
return;
for (i=0;i<count; i++)
{
buffer[0]=*((GLuint *)GB.Array.Get(iArray,i));
glDeleteRenderbuffersEXT(1, buffer);
}
END_METHOD
BEGIN_METHOD(GLFRAMEBUFFERRENDERBUFFEREXT, GB_INTEGER target; GB_INTEGER attachment; GB_INTEGER rbtarget; GB_INTEGER buffer)
glFramebufferRenderbufferEXT(VARG(target), VARG(attachment), VARG(rbtarget), VARG(buffer));
END_METHOD
BEGIN_METHOD(GLFRAMEBUFFERTEXTURE1DEXT, GB_INTEGER target; GB_INTEGER attachment; GB_INTEGER textarget; GB_INTEGER texture; GB_INTEGER level)
glFramebufferTexture1DEXT(VARG(target), VARG(attachment), VARG(textarget), VARG(texture), VARG(level));
END_METHOD
BEGIN_METHOD(GLFRAMEBUFFERTEXTURE2DEXT, GB_INTEGER target; GB_INTEGER attachment; GB_INTEGER textarget; GB_INTEGER texture; GB_INTEGER level)
glFramebufferTexture2DEXT(VARG(target), VARG(attachment), VARG(textarget), VARG(texture), VARG(level));
END_METHOD
BEGIN_METHOD(GLFRAMEBUFFERTEXTURE3DEXT, GB_INTEGER target; GB_INTEGER attachment; GB_INTEGER textarget; GB_INTEGER texture; GB_INTEGER level; GB_INTEGER zoffset)
glFramebufferTexture3DEXT(VARG(target), VARG(attachment), VARG(textarget), VARG(texture), VARG(level), VARG(zoffset));
END_METHOD
BEGIN_METHOD(GLGENERATEMIPMAPEXT, GB_INTEGER target)
glGenerateMipmapEXT(VARG(target));
END_METHOD
BEGIN_METHOD(GLGENFRAMEBUFFERSEXT, GB_INTEGER count)
GLuint framebuffers[VARG(count)];
int i, count = VARG(count);
GB_ARRAY iArray;
if (count<=0)
return;
GB.Array.New(&iArray , GB_T_INTEGER , count);
glGenFramebuffersEXT(VARG(count), framebuffers);
for (i=0;i<count; i++)
*((GLuint *)GB.Array.Get(iArray, i)) = framebuffers[i];
GB.ReturnObject(iArray);
END_METHOD
BEGIN_METHOD(GLGENRENDERBUFFERSEXT, GB_INTEGER count)
GLuint renderbuffers[VARG(count)];
int i, count = VARG(count);
GB_ARRAY iArray;
if (count<=0)
return;
GB.Array.New(&iArray , GB_T_INTEGER , count);
glGenRenderbuffersEXT(VARG(count), renderbuffers);
for (i=0;i<count; i++)
*((GLuint *)GB.Array.Get(iArray, i)) = renderbuffers[i];
GB.ReturnObject(iArray);
END_METHOD
BEGIN_METHOD(GLGETFRAMEBUFFERATTACHMENTPARAMETERIVEXT, GB_INTEGER target; GB_INTEGER attachment; GB_INTEGER pname)
int params[1];
GB_ARRAY iArray;
GB.Array.New(&iArray , GB_T_INTEGER , 1);
glGetFramebufferAttachmentParameterivEXT(VARG(target), VARG(attachment), VARG(pname), params);
*((GLuint *)GB.Array.Get(iArray, 0)) = params[0];
GB.ReturnObject(iArray);
END_METHOD
BEGIN_METHOD(GLGETRENDERBUFFERPARAMETERIVEXT, GB_INTEGER target; GB_INTEGER pname)
int params[1];
GB_ARRAY iArray;
GB.Array.New(&iArray , GB_T_INTEGER , 1);
glGetRenderbufferParameterivEXT(VARG(target), VARG(pname), params);
*((GLuint *)GB.Array.Get(iArray, 0)) = params[0];
GB.ReturnObject(iArray);
END_METHOD
BEGIN_METHOD(GLISFRAMEBUFFEREXT, GB_INTEGER buffer)
GB.ReturnBoolean(glIsFramebufferEXT(VARG(buffer)));
END_METHOD
BEGIN_METHOD(GLISRENDERBUFFEREXT, GB_INTEGER buffer)
GB.ReturnBoolean(glIsRenderbufferEXT(VARG(buffer)));
END_METHOD
BEGIN_METHOD(GLRENDERBUFFERSTORAGEEXT, GB_INTEGER target; GB_INTEGER format; GB_INTEGER width; GB_INTEGER height)
glRenderbufferStorageEXT(VARG(target), VARG(format), VARG(width), VARG(height));
END_METHOD
//