import glcxx example app to start
This commit is contained in:
1 parent
9f08819dc1
commit
9bad7a1d86
22 files changed
+752
-1758
No files matched your search
+3
-4
@@ -1,4 +1,3 @@
|
||||
/build
|
||||
/.rsconscache
|
||||
/freetype2gl3
|
||||
/freetype2gl3.exe
|
||||
/build/
|
||||
/.waf*
|
||||
/.lock-waf*
|
||||
@@ -0,0 +1,6 @@
|
||||
[submodule "libs/glm"]
|
||||
path = libs/glm
|
||||
url = git://github.com/g-truc/glm.git
|
||||
[submodule "libs/glcxx"]
|
||||
path = libs/glcxx
|
||||
url = git://github.com/holtrop/glcxx.git
|
||||
+181
-1095
File diff suppressed because it is too large.
Load diff
+25
-113
@@ -1,4 +1,4 @@
|
||||
#include "gl3w.h"
|
||||
#include <GL3/gl3w.h>
|
||||
|
||||
#ifdef _WIN32
|
||||
#define WIN32_LEAN_AND_MEAN 1
|
||||
@@ -651,6 +651,18 @@ PFNGLDEBUGMESSAGEINSERTARBPROC gl3wDebugMessageInsertARB;
|
||||
PFNGLDEBUGMESSAGECALLBACKARBPROC gl3wDebugMessageCallbackARB;
|
||||
PFNGLGETDEBUGMESSAGELOGARBPROC gl3wGetDebugMessageLogARB;
|
||||
PFNGLGETGRAPHICSRESETSTATUSARBPROC gl3wGetGraphicsResetStatusARB;
|
||||
PFNGLGETNMAPDVARBPROC gl3wGetnMapdvARB;
|
||||
PFNGLGETNMAPFVARBPROC gl3wGetnMapfvARB;
|
||||
PFNGLGETNMAPIVARBPROC gl3wGetnMapivARB;
|
||||
PFNGLGETNPIXELMAPFVARBPROC gl3wGetnPixelMapfvARB;
|
||||
PFNGLGETNPIXELMAPUIVARBPROC gl3wGetnPixelMapuivARB;
|
||||
PFNGLGETNPIXELMAPUSVARBPROC gl3wGetnPixelMapusvARB;
|
||||
PFNGLGETNPOLYGONSTIPPLEARBPROC gl3wGetnPolygonStippleARB;
|
||||
PFNGLGETNCOLORTABLEARBPROC gl3wGetnColorTableARB;
|
||||
PFNGLGETNCONVOLUTIONFILTERARBPROC gl3wGetnConvolutionFilterARB;
|
||||
PFNGLGETNSEPARABLEFILTERARBPROC gl3wGetnSeparableFilterARB;
|
||||
PFNGLGETNHISTOGRAMARBPROC gl3wGetnHistogramARB;
|
||||
PFNGLGETNMINMAXARBPROC gl3wGetnMinmaxARB;
|
||||
PFNGLGETNTEXIMAGEARBPROC gl3wGetnTexImageARB;
|
||||
PFNGLREADNPIXELSARBPROC gl3wReadnPixelsARB;
|
||||
PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC gl3wGetnCompressedTexImageARB;
|
||||
@@ -673,62 +685,6 @@ PFNGLTEXSTORAGE3DPROC gl3wTexStorage3D;
|
||||
PFNGLTEXTURESTORAGE1DEXTPROC gl3wTextureStorage1DEXT;
|
||||
PFNGLTEXTURESTORAGE2DEXTPROC gl3wTextureStorage2DEXT;
|
||||
PFNGLTEXTURESTORAGE3DEXTPROC gl3wTextureStorage3DEXT;
|
||||
PFNGLDEBUGMESSAGECONTROLPROC gl3wDebugMessageControl;
|
||||
PFNGLDEBUGMESSAGEINSERTPROC gl3wDebugMessageInsert;
|
||||
PFNGLDEBUGMESSAGECALLBACKPROC gl3wDebugMessageCallback;
|
||||
PFNGLGETDEBUGMESSAGELOGPROC gl3wGetDebugMessageLog;
|
||||
PFNGLPUSHDEBUGGROUPPROC gl3wPushDebugGroup;
|
||||
PFNGLPOPDEBUGGROUPPROC gl3wPopDebugGroup;
|
||||
PFNGLOBJECTLABELPROC gl3wObjectLabel;
|
||||
PFNGLGETOBJECTLABELPROC gl3wGetObjectLabel;
|
||||
PFNGLOBJECTPTRLABELPROC gl3wObjectPtrLabel;
|
||||
PFNGLGETOBJECTPTRLABELPROC gl3wGetObjectPtrLabel;
|
||||
PFNGLCLEARBUFFERDATAPROC gl3wClearBufferData;
|
||||
PFNGLCLEARBUFFERSUBDATAPROC gl3wClearBufferSubData;
|
||||
PFNGLCLEARNAMEDBUFFERDATAEXTPROC gl3wClearNamedBufferDataEXT;
|
||||
PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC gl3wClearNamedBufferSubDataEXT;
|
||||
PFNGLDISPATCHCOMPUTEPROC gl3wDispatchCompute;
|
||||
PFNGLDISPATCHCOMPUTEINDIRECTPROC gl3wDispatchComputeIndirect;
|
||||
PFNGLCOPYIMAGESUBDATAPROC gl3wCopyImageSubData;
|
||||
PFNGLTEXTUREVIEWPROC gl3wTextureView;
|
||||
PFNGLBINDVERTEXBUFFERPROC gl3wBindVertexBuffer;
|
||||
PFNGLVERTEXATTRIBFORMATPROC gl3wVertexAttribFormat;
|
||||
PFNGLVERTEXATTRIBIFORMATPROC gl3wVertexAttribIFormat;
|
||||
PFNGLVERTEXATTRIBLFORMATPROC gl3wVertexAttribLFormat;
|
||||
PFNGLVERTEXATTRIBBINDINGPROC gl3wVertexAttribBinding;
|
||||
PFNGLVERTEXBINDINGDIVISORPROC gl3wVertexBindingDivisor;
|
||||
PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC gl3wVertexArrayBindVertexBufferEXT;
|
||||
PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC gl3wVertexArrayVertexAttribFormatEXT;
|
||||
PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC gl3wVertexArrayVertexAttribIFormatEXT;
|
||||
PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC gl3wVertexArrayVertexAttribLFormatEXT;
|
||||
PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC gl3wVertexArrayVertexAttribBindingEXT;
|
||||
PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC gl3wVertexArrayVertexBindingDivisorEXT;
|
||||
PFNGLFRAMEBUFFERPARAMETERIPROC gl3wFramebufferParameteri;
|
||||
PFNGLGETFRAMEBUFFERPARAMETERIVPROC gl3wGetFramebufferParameteriv;
|
||||
PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC gl3wNamedFramebufferParameteriEXT;
|
||||
PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC gl3wGetNamedFramebufferParameterivEXT;
|
||||
PFNGLGETINTERNALFORMATI64VPROC gl3wGetInternalformati64v;
|
||||
PFNGLINVALIDATETEXSUBIMAGEPROC gl3wInvalidateTexSubImage;
|
||||
PFNGLINVALIDATETEXIMAGEPROC gl3wInvalidateTexImage;
|
||||
PFNGLINVALIDATEBUFFERSUBDATAPROC gl3wInvalidateBufferSubData;
|
||||
PFNGLINVALIDATEBUFFERDATAPROC gl3wInvalidateBufferData;
|
||||
PFNGLINVALIDATEFRAMEBUFFERPROC gl3wInvalidateFramebuffer;
|
||||
PFNGLINVALIDATESUBFRAMEBUFFERPROC gl3wInvalidateSubFramebuffer;
|
||||
PFNGLMULTIDRAWARRAYSINDIRECTPROC gl3wMultiDrawArraysIndirect;
|
||||
PFNGLMULTIDRAWELEMENTSINDIRECTPROC gl3wMultiDrawElementsIndirect;
|
||||
PFNGLGETPROGRAMINTERFACEIVPROC gl3wGetProgramInterfaceiv;
|
||||
PFNGLGETPROGRAMRESOURCEINDEXPROC gl3wGetProgramResourceIndex;
|
||||
PFNGLGETPROGRAMRESOURCENAMEPROC gl3wGetProgramResourceName;
|
||||
PFNGLGETPROGRAMRESOURCEIVPROC gl3wGetProgramResourceiv;
|
||||
PFNGLGETPROGRAMRESOURCELOCATIONPROC gl3wGetProgramResourceLocation;
|
||||
PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC gl3wGetProgramResourceLocationIndex;
|
||||
PFNGLSHADERSTORAGEBLOCKBINDINGPROC gl3wShaderStorageBlockBinding;
|
||||
PFNGLTEXBUFFERRANGEPROC gl3wTexBufferRange;
|
||||
PFNGLTEXTUREBUFFERRANGEEXTPROC gl3wTextureBufferRangeEXT;
|
||||
PFNGLTEXSTORAGE2DMULTISAMPLEPROC gl3wTexStorage2DMultisample;
|
||||
PFNGLTEXSTORAGE3DMULTISAMPLEPROC gl3wTexStorage3DMultisample;
|
||||
PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC gl3wTextureStorage2DMultisampleEXT;
|
||||
PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC gl3wTextureStorage3DMultisampleEXT;
|
||||
|
||||
static void load_procs(void)
|
||||
{
|
||||
@@ -1258,6 +1214,18 @@ static void load_procs(void)
|
||||
gl3wDebugMessageCallbackARB = (PFNGLDEBUGMESSAGECALLBACKARBPROC) get_proc("glDebugMessageCallbackARB");
|
||||
gl3wGetDebugMessageLogARB = (PFNGLGETDEBUGMESSAGELOGARBPROC) get_proc("glGetDebugMessageLogARB");
|
||||
gl3wGetGraphicsResetStatusARB = (PFNGLGETGRAPHICSRESETSTATUSARBPROC) get_proc("glGetGraphicsResetStatusARB");
|
||||
gl3wGetnMapdvARB = (PFNGLGETNMAPDVARBPROC) get_proc("glGetnMapdvARB");
|
||||
gl3wGetnMapfvARB = (PFNGLGETNMAPFVARBPROC) get_proc("glGetnMapfvARB");
|
||||
gl3wGetnMapivARB = (PFNGLGETNMAPIVARBPROC) get_proc("glGetnMapivARB");
|
||||
gl3wGetnPixelMapfvARB = (PFNGLGETNPIXELMAPFVARBPROC) get_proc("glGetnPixelMapfvARB");
|
||||
gl3wGetnPixelMapuivARB = (PFNGLGETNPIXELMAPUIVARBPROC) get_proc("glGetnPixelMapuivARB");
|
||||
gl3wGetnPixelMapusvARB = (PFNGLGETNPIXELMAPUSVARBPROC) get_proc("glGetnPixelMapusvARB");
|
||||
gl3wGetnPolygonStippleARB = (PFNGLGETNPOLYGONSTIPPLEARBPROC) get_proc("glGetnPolygonStippleARB");
|
||||
gl3wGetnColorTableARB = (PFNGLGETNCOLORTABLEARBPROC) get_proc("glGetnColorTableARB");
|
||||
gl3wGetnConvolutionFilterARB = (PFNGLGETNCONVOLUTIONFILTERARBPROC) get_proc("glGetnConvolutionFilterARB");
|
||||
gl3wGetnSeparableFilterARB = (PFNGLGETNSEPARABLEFILTERARBPROC) get_proc("glGetnSeparableFilterARB");
|
||||
gl3wGetnHistogramARB = (PFNGLGETNHISTOGRAMARBPROC) get_proc("glGetnHistogramARB");
|
||||
gl3wGetnMinmaxARB = (PFNGLGETNMINMAXARBPROC) get_proc("glGetnMinmaxARB");
|
||||
gl3wGetnTexImageARB = (PFNGLGETNTEXIMAGEARBPROC) get_proc("glGetnTexImageARB");
|
||||
gl3wReadnPixelsARB = (PFNGLREADNPIXELSARBPROC) get_proc("glReadnPixelsARB");
|
||||
gl3wGetnCompressedTexImageARB = (PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC) get_proc("glGetnCompressedTexImageARB");
|
||||
@@ -1280,60 +1248,4 @@ static void load_procs(void)
|
||||
gl3wTextureStorage1DEXT = (PFNGLTEXTURESTORAGE1DEXTPROC) get_proc("glTextureStorage1DEXT");
|
||||
gl3wTextureStorage2DEXT = (PFNGLTEXTURESTORAGE2DEXTPROC) get_proc("glTextureStorage2DEXT");
|
||||
gl3wTextureStorage3DEXT = (PFNGLTEXTURESTORAGE3DEXTPROC) get_proc("glTextureStorage3DEXT");
|
||||
gl3wDebugMessageControl = (PFNGLDEBUGMESSAGECONTROLPROC) get_proc("glDebugMessageControl");
|
||||
gl3wDebugMessageInsert = (PFNGLDEBUGMESSAGEINSERTPROC) get_proc("glDebugMessageInsert");
|
||||
gl3wDebugMessageCallback = (PFNGLDEBUGMESSAGECALLBACKPROC) get_proc("glDebugMessageCallback");
|
||||
gl3wGetDebugMessageLog = (PFNGLGETDEBUGMESSAGELOGPROC) get_proc("glGetDebugMessageLog");
|
||||
gl3wPushDebugGroup = (PFNGLPUSHDEBUGGROUPPROC) get_proc("glPushDebugGroup");
|
||||
gl3wPopDebugGroup = (PFNGLPOPDEBUGGROUPPROC) get_proc("glPopDebugGroup");
|
||||
gl3wObjectLabel = (PFNGLOBJECTLABELPROC) get_proc("glObjectLabel");
|
||||
gl3wGetObjectLabel = (PFNGLGETOBJECTLABELPROC) get_proc("glGetObjectLabel");
|
||||
gl3wObjectPtrLabel = (PFNGLOBJECTPTRLABELPROC) get_proc("glObjectPtrLabel");
|
||||
gl3wGetObjectPtrLabel = (PFNGLGETOBJECTPTRLABELPROC) get_proc("glGetObjectPtrLabel");
|
||||
gl3wClearBufferData = (PFNGLCLEARBUFFERDATAPROC) get_proc("glClearBufferData");
|
||||
gl3wClearBufferSubData = (PFNGLCLEARBUFFERSUBDATAPROC) get_proc("glClearBufferSubData");
|
||||
gl3wClearNamedBufferDataEXT = (PFNGLCLEARNAMEDBUFFERDATAEXTPROC) get_proc("glClearNamedBufferDataEXT");
|
||||
gl3wClearNamedBufferSubDataEXT = (PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC) get_proc("glClearNamedBufferSubDataEXT");
|
||||
gl3wDispatchCompute = (PFNGLDISPATCHCOMPUTEPROC) get_proc("glDispatchCompute");
|
||||
gl3wDispatchComputeIndirect = (PFNGLDISPATCHCOMPUTEINDIRECTPROC) get_proc("glDispatchComputeIndirect");
|
||||
gl3wCopyImageSubData = (PFNGLCOPYIMAGESUBDATAPROC) get_proc("glCopyImageSubData");
|
||||
gl3wTextureView = (PFNGLTEXTUREVIEWPROC) get_proc("glTextureView");
|
||||
gl3wBindVertexBuffer = (PFNGLBINDVERTEXBUFFERPROC) get_proc("glBindVertexBuffer");
|
||||
gl3wVertexAttribFormat = (PFNGLVERTEXATTRIBFORMATPROC) get_proc("glVertexAttribFormat");
|
||||
gl3wVertexAttribIFormat = (PFNGLVERTEXATTRIBIFORMATPROC) get_proc("glVertexAttribIFormat");
|
||||
gl3wVertexAttribLFormat = (PFNGLVERTEXATTRIBLFORMATPROC) get_proc("glVertexAttribLFormat");
|
||||
gl3wVertexAttribBinding = (PFNGLVERTEXATTRIBBINDINGPROC) get_proc("glVertexAttribBinding");
|
||||
gl3wVertexBindingDivisor = (PFNGLVERTEXBINDINGDIVISORPROC) get_proc("glVertexBindingDivisor");
|
||||
gl3wVertexArrayBindVertexBufferEXT = (PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC) get_proc("glVertexArrayBindVertexBufferEXT");
|
||||
gl3wVertexArrayVertexAttribFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC) get_proc("glVertexArrayVertexAttribFormatEXT");
|
||||
gl3wVertexArrayVertexAttribIFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC) get_proc("glVertexArrayVertexAttribIFormatEXT");
|
||||
gl3wVertexArrayVertexAttribLFormatEXT = (PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC) get_proc("glVertexArrayVertexAttribLFormatEXT");
|
||||
gl3wVertexArrayVertexAttribBindingEXT = (PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC) get_proc("glVertexArrayVertexAttribBindingEXT");
|
||||
gl3wVertexArrayVertexBindingDivisorEXT = (PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC) get_proc("glVertexArrayVertexBindingDivisorEXT");
|
||||
gl3wFramebufferParameteri = (PFNGLFRAMEBUFFERPARAMETERIPROC) get_proc("glFramebufferParameteri");
|
||||
gl3wGetFramebufferParameteriv = (PFNGLGETFRAMEBUFFERPARAMETERIVPROC) get_proc("glGetFramebufferParameteriv");
|
||||
gl3wNamedFramebufferParameteriEXT = (PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC) get_proc("glNamedFramebufferParameteriEXT");
|
||||
gl3wGetNamedFramebufferParameterivEXT = (PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC) get_proc("glGetNamedFramebufferParameterivEXT");
|
||||
gl3wGetInternalformati64v = (PFNGLGETINTERNALFORMATI64VPROC) get_proc("glGetInternalformati64v");
|
||||
gl3wInvalidateTexSubImage = (PFNGLINVALIDATETEXSUBIMAGEPROC) get_proc("glInvalidateTexSubImage");
|
||||
gl3wInvalidateTexImage = (PFNGLINVALIDATETEXIMAGEPROC) get_proc("glInvalidateTexImage");
|
||||
gl3wInvalidateBufferSubData = (PFNGLINVALIDATEBUFFERSUBDATAPROC) get_proc("glInvalidateBufferSubData");
|
||||
gl3wInvalidateBufferData = (PFNGLINVALIDATEBUFFERDATAPROC) get_proc("glInvalidateBufferData");
|
||||
gl3wInvalidateFramebuffer = (PFNGLINVALIDATEFRAMEBUFFERPROC) get_proc("glInvalidateFramebuffer");
|
||||
gl3wInvalidateSubFramebuffer = (PFNGLINVALIDATESUBFRAMEBUFFERPROC) get_proc("glInvalidateSubFramebuffer");
|
||||
gl3wMultiDrawArraysIndirect = (PFNGLMULTIDRAWARRAYSINDIRECTPROC) get_proc("glMultiDrawArraysIndirect");
|
||||
gl3wMultiDrawElementsIndirect = (PFNGLMULTIDRAWELEMENTSINDIRECTPROC) get_proc("glMultiDrawElementsIndirect");
|
||||
gl3wGetProgramInterfaceiv = (PFNGLGETPROGRAMINTERFACEIVPROC) get_proc("glGetProgramInterfaceiv");
|
||||
gl3wGetProgramResourceIndex = (PFNGLGETPROGRAMRESOURCEINDEXPROC) get_proc("glGetProgramResourceIndex");
|
||||
gl3wGetProgramResourceName = (PFNGLGETPROGRAMRESOURCENAMEPROC) get_proc("glGetProgramResourceName");
|
||||
gl3wGetProgramResourceiv = (PFNGLGETPROGRAMRESOURCEIVPROC) get_proc("glGetProgramResourceiv");
|
||||
gl3wGetProgramResourceLocation = (PFNGLGETPROGRAMRESOURCELOCATIONPROC) get_proc("glGetProgramResourceLocation");
|
||||
gl3wGetProgramResourceLocationIndex = (PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC) get_proc("glGetProgramResourceLocationIndex");
|
||||
gl3wShaderStorageBlockBinding = (PFNGLSHADERSTORAGEBLOCKBINDINGPROC) get_proc("glShaderStorageBlockBinding");
|
||||
gl3wTexBufferRange = (PFNGLTEXBUFFERRANGEPROC) get_proc("glTexBufferRange");
|
||||
gl3wTextureBufferRangeEXT = (PFNGLTEXTUREBUFFERRANGEEXTPROC) get_proc("glTextureBufferRangeEXT");
|
||||
gl3wTexStorage2DMultisample = (PFNGLTEXSTORAGE2DMULTISAMPLEPROC) get_proc("glTexStorage2DMultisample");
|
||||
gl3wTexStorage3DMultisample = (PFNGLTEXSTORAGE3DMULTISAMPLEPROC) get_proc("glTexStorage3DMultisample");
|
||||
gl3wTextureStorage2DMultisampleEXT = (PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC) get_proc("glTextureStorage2DMultisampleEXT");
|
||||
gl3wTextureStorage3DMultisampleEXT = (PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC) get_proc("glTextureStorage3DMultisampleEXT");
|
||||
}
|
||||
+25
-114
@@ -1,8 +1,7 @@
|
||||
#ifndef __gl3w_h_
|
||||
#define __gl3w_h_
|
||||
|
||||
//#include <GL/glcorearb.h>
|
||||
#include "glcorearb.h"
|
||||
#include <GL3/gl3.h>
|
||||
|
||||
#ifndef __gl_h_
|
||||
#define __gl_h_
|
||||
@@ -544,6 +543,18 @@ extern PFNGLDEBUGMESSAGEINSERTARBPROC gl3wDebugMessageInsertARB;
|
||||
extern PFNGLDEBUGMESSAGECALLBACKARBPROC gl3wDebugMessageCallbackARB;
|
||||
extern PFNGLGETDEBUGMESSAGELOGARBPROC gl3wGetDebugMessageLogARB;
|
||||
extern PFNGLGETGRAPHICSRESETSTATUSARBPROC gl3wGetGraphicsResetStatusARB;
|
||||
extern PFNGLGETNMAPDVARBPROC gl3wGetnMapdvARB;
|
||||
extern PFNGLGETNMAPFVARBPROC gl3wGetnMapfvARB;
|
||||
extern PFNGLGETNMAPIVARBPROC gl3wGetnMapivARB;
|
||||
extern PFNGLGETNPIXELMAPFVARBPROC gl3wGetnPixelMapfvARB;
|
||||
extern PFNGLGETNPIXELMAPUIVARBPROC gl3wGetnPixelMapuivARB;
|
||||
extern PFNGLGETNPIXELMAPUSVARBPROC gl3wGetnPixelMapusvARB;
|
||||
extern PFNGLGETNPOLYGONSTIPPLEARBPROC gl3wGetnPolygonStippleARB;
|
||||
extern PFNGLGETNCOLORTABLEARBPROC gl3wGetnColorTableARB;
|
||||
extern PFNGLGETNCONVOLUTIONFILTERARBPROC gl3wGetnConvolutionFilterARB;
|
||||
extern PFNGLGETNSEPARABLEFILTERARBPROC gl3wGetnSeparableFilterARB;
|
||||
extern PFNGLGETNHISTOGRAMARBPROC gl3wGetnHistogramARB;
|
||||
extern PFNGLGETNMINMAXARBPROC gl3wGetnMinmaxARB;
|
||||
extern PFNGLGETNTEXIMAGEARBPROC gl3wGetnTexImageARB;
|
||||
extern PFNGLREADNPIXELSARBPROC gl3wReadnPixelsARB;
|
||||
extern PFNGLGETNCOMPRESSEDTEXIMAGEARBPROC gl3wGetnCompressedTexImageARB;
|
||||
@@ -566,62 +577,6 @@ extern PFNGLTEXSTORAGE3DPROC gl3wTexStorage3D;
|
||||
extern PFNGLTEXTURESTORAGE1DEXTPROC gl3wTextureStorage1DEXT;
|
||||
extern PFNGLTEXTURESTORAGE2DEXTPROC gl3wTextureStorage2DEXT;
|
||||
extern PFNGLTEXTURESTORAGE3DEXTPROC gl3wTextureStorage3DEXT;
|
||||
extern PFNGLDEBUGMESSAGECONTROLPROC gl3wDebugMessageControl;
|
||||
extern PFNGLDEBUGMESSAGEINSERTPROC gl3wDebugMessageInsert;
|
||||
extern PFNGLDEBUGMESSAGECALLBACKPROC gl3wDebugMessageCallback;
|
||||
extern PFNGLGETDEBUGMESSAGELOGPROC gl3wGetDebugMessageLog;
|
||||
extern PFNGLPUSHDEBUGGROUPPROC gl3wPushDebugGroup;
|
||||
extern PFNGLPOPDEBUGGROUPPROC gl3wPopDebugGroup;
|
||||
extern PFNGLOBJECTLABELPROC gl3wObjectLabel;
|
||||
extern PFNGLGETOBJECTLABELPROC gl3wGetObjectLabel;
|
||||
extern PFNGLOBJECTPTRLABELPROC gl3wObjectPtrLabel;
|
||||
extern PFNGLGETOBJECTPTRLABELPROC gl3wGetObjectPtrLabel;
|
||||
extern PFNGLCLEARBUFFERDATAPROC gl3wClearBufferData;
|
||||
extern PFNGLCLEARBUFFERSUBDATAPROC gl3wClearBufferSubData;
|
||||
extern PFNGLCLEARNAMEDBUFFERDATAEXTPROC gl3wClearNamedBufferDataEXT;
|
||||
extern PFNGLCLEARNAMEDBUFFERSUBDATAEXTPROC gl3wClearNamedBufferSubDataEXT;
|
||||
extern PFNGLDISPATCHCOMPUTEPROC gl3wDispatchCompute;
|
||||
extern PFNGLDISPATCHCOMPUTEINDIRECTPROC gl3wDispatchComputeIndirect;
|
||||
extern PFNGLCOPYIMAGESUBDATAPROC gl3wCopyImageSubData;
|
||||
extern PFNGLTEXTUREVIEWPROC gl3wTextureView;
|
||||
extern PFNGLBINDVERTEXBUFFERPROC gl3wBindVertexBuffer;
|
||||
extern PFNGLVERTEXATTRIBFORMATPROC gl3wVertexAttribFormat;
|
||||
extern PFNGLVERTEXATTRIBIFORMATPROC gl3wVertexAttribIFormat;
|
||||
extern PFNGLVERTEXATTRIBLFORMATPROC gl3wVertexAttribLFormat;
|
||||
extern PFNGLVERTEXATTRIBBINDINGPROC gl3wVertexAttribBinding;
|
||||
extern PFNGLVERTEXBINDINGDIVISORPROC gl3wVertexBindingDivisor;
|
||||
extern PFNGLVERTEXARRAYBINDVERTEXBUFFEREXTPROC gl3wVertexArrayBindVertexBufferEXT;
|
||||
extern PFNGLVERTEXARRAYVERTEXATTRIBFORMATEXTPROC gl3wVertexArrayVertexAttribFormatEXT;
|
||||
extern PFNGLVERTEXARRAYVERTEXATTRIBIFORMATEXTPROC gl3wVertexArrayVertexAttribIFormatEXT;
|
||||
extern PFNGLVERTEXARRAYVERTEXATTRIBLFORMATEXTPROC gl3wVertexArrayVertexAttribLFormatEXT;
|
||||
extern PFNGLVERTEXARRAYVERTEXATTRIBBINDINGEXTPROC gl3wVertexArrayVertexAttribBindingEXT;
|
||||
extern PFNGLVERTEXARRAYVERTEXBINDINGDIVISOREXTPROC gl3wVertexArrayVertexBindingDivisorEXT;
|
||||
extern PFNGLFRAMEBUFFERPARAMETERIPROC gl3wFramebufferParameteri;
|
||||
extern PFNGLGETFRAMEBUFFERPARAMETERIVPROC gl3wGetFramebufferParameteriv;
|
||||
extern PFNGLNAMEDFRAMEBUFFERPARAMETERIEXTPROC gl3wNamedFramebufferParameteriEXT;
|
||||
extern PFNGLGETNAMEDFRAMEBUFFERPARAMETERIVEXTPROC gl3wGetNamedFramebufferParameterivEXT;
|
||||
extern PFNGLGETINTERNALFORMATI64VPROC gl3wGetInternalformati64v;
|
||||
extern PFNGLINVALIDATETEXSUBIMAGEPROC gl3wInvalidateTexSubImage;
|
||||
extern PFNGLINVALIDATETEXIMAGEPROC gl3wInvalidateTexImage;
|
||||
extern PFNGLINVALIDATEBUFFERSUBDATAPROC gl3wInvalidateBufferSubData;
|
||||
extern PFNGLINVALIDATEBUFFERDATAPROC gl3wInvalidateBufferData;
|
||||
extern PFNGLINVALIDATEFRAMEBUFFERPROC gl3wInvalidateFramebuffer;
|
||||
extern PFNGLINVALIDATESUBFRAMEBUFFERPROC gl3wInvalidateSubFramebuffer;
|
||||
extern PFNGLMULTIDRAWARRAYSINDIRECTPROC gl3wMultiDrawArraysIndirect;
|
||||
extern PFNGLMULTIDRAWELEMENTSINDIRECTPROC gl3wMultiDrawElementsIndirect;
|
||||
extern PFNGLGETPROGRAMINTERFACEIVPROC gl3wGetProgramInterfaceiv;
|
||||
extern PFNGLGETPROGRAMRESOURCEINDEXPROC gl3wGetProgramResourceIndex;
|
||||
extern PFNGLGETPROGRAMRESOURCENAMEPROC gl3wGetProgramResourceName;
|
||||
extern PFNGLGETPROGRAMRESOURCEIVPROC gl3wGetProgramResourceiv;
|
||||
extern PFNGLGETPROGRAMRESOURCELOCATIONPROC gl3wGetProgramResourceLocation;
|
||||
extern PFNGLGETPROGRAMRESOURCELOCATIONINDEXPROC gl3wGetProgramResourceLocationIndex;
|
||||
extern PFNGLSHADERSTORAGEBLOCKBINDINGPROC gl3wShaderStorageBlockBinding;
|
||||
extern PFNGLTEXBUFFERRANGEPROC gl3wTexBufferRange;
|
||||
extern PFNGLTEXTUREBUFFERRANGEEXTPROC gl3wTextureBufferRangeEXT;
|
||||
extern PFNGLTEXSTORAGE2DMULTISAMPLEPROC gl3wTexStorage2DMultisample;
|
||||
extern PFNGLTEXSTORAGE3DMULTISAMPLEPROC gl3wTexStorage3DMultisample;
|
||||
extern PFNGLTEXTURESTORAGE2DMULTISAMPLEEXTPROC gl3wTextureStorage2DMultisampleEXT;
|
||||
extern PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC gl3wTextureStorage3DMultisampleEXT;
|
||||
|
||||
#define glCullFace gl3wCullFace
|
||||
#define glFrontFace gl3wFrontFace
|
||||
@@ -1149,6 +1104,18 @@ extern PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC gl3wTextureStorage3DMultisampleEX
|
||||
#define glDebugMessageCallbackARB gl3wDebugMessageCallbackARB
|
||||
#define glGetDebugMessageLogARB gl3wGetDebugMessageLogARB
|
||||
#define glGetGraphicsResetStatusARB gl3wGetGraphicsResetStatusARB
|
||||
#define glGetnMapdvARB gl3wGetnMapdvARB
|
||||
#define glGetnMapfvARB gl3wGetnMapfvARB
|
||||
#define glGetnMapivARB gl3wGetnMapivARB
|
||||
#define glGetnPixelMapfvARB gl3wGetnPixelMapfvARB
|
||||
#define glGetnPixelMapuivARB gl3wGetnPixelMapuivARB
|
||||
#define glGetnPixelMapusvARB gl3wGetnPixelMapusvARB
|
||||
#define glGetnPolygonStippleARB gl3wGetnPolygonStippleARB
|
||||
#define glGetnColorTableARB gl3wGetnColorTableARB
|
||||
#define glGetnConvolutionFilterARB gl3wGetnConvolutionFilterARB
|
||||
#define glGetnSeparableFilterARB gl3wGetnSeparableFilterARB
|
||||
#define glGetnHistogramARB gl3wGetnHistogramARB
|
||||
#define glGetnMinmaxARB gl3wGetnMinmaxARB
|
||||
#define glGetnTexImageARB gl3wGetnTexImageARB
|
||||
#define glReadnPixelsARB gl3wReadnPixelsARB
|
||||
#define glGetnCompressedTexImageARB gl3wGetnCompressedTexImageARB
|
||||
@@ -1171,62 +1138,6 @@ extern PFNGLTEXTURESTORAGE3DMULTISAMPLEEXTPROC gl3wTextureStorage3DMultisampleEX
|
||||
#define glTextureStorage1DEXT gl3wTextureStorage1DEXT
|
||||
#define glTextureStorage2DEXT gl3wTextureStorage2DEXT
|
||||
#define glTextureStorage3DEXT gl3wTextureStorage3DEXT
|
||||
#define glDebugMessageControl gl3wDebugMessageControl
|
||||
#define glDebugMessageInsert gl3wDebugMessageInsert
|
||||
#define glDebugMessageCallback gl3wDebugMessageCallback
|
||||
#define glGetDebugMessageLog gl3wGetDebugMessageLog
|
||||
#define glPushDebugGroup gl3wPushDebugGroup
|
||||
#define glPopDebugGroup gl3wPopDebugGroup
|
||||
#define glObjectLabel gl3wObjectLabel
|
||||
#define glGetObjectLabel gl3wGetObjectLabel
|
||||
#define glObjectPtrLabel gl3wObjectPtrLabel
|
||||
#define glGetObjectPtrLabel gl3wGetObjectPtrLabel
|
||||
#define glClearBufferData gl3wClearBufferData
|
||||
#define glClearBufferSubData gl3wClearBufferSubData
|
||||
#define glClearNamedBufferDataEXT gl3wClearNamedBufferDataEXT
|
||||
#define glClearNamedBufferSubDataEXT gl3wClearNamedBufferSubDataEXT
|
||||
#define glDispatchCompute gl3wDispatchCompute
|
||||
#define glDispatchComputeIndirect gl3wDispatchComputeIndirect
|
||||
#define glCopyImageSubData gl3wCopyImageSubData
|
||||
#define glTextureView gl3wTextureView
|
||||
#define glBindVertexBuffer gl3wBindVertexBuffer
|
||||
#define glVertexAttribFormat gl3wVertexAttribFormat
|
||||
#define glVertexAttribIFormat gl3wVertexAttribIFormat
|
||||
#define glVertexAttribLFormat gl3wVertexAttribLFormat
|
||||
#define glVertexAttribBinding gl3wVertexAttribBinding
|
||||
#define glVertexBindingDivisor gl3wVertexBindingDivisor
|
||||
#define glVertexArrayBindVertexBufferEXT gl3wVertexArrayBindVertexBufferEXT
|
||||
#define glVertexArrayVertexAttribFormatEXT gl3wVertexArrayVertexAttribFormatEXT
|
||||
#define glVertexArrayVertexAttribIFormatEXT gl3wVertexArrayVertexAttribIFormatEXT
|
||||
#define glVertexArrayVertexAttribLFormatEXT gl3wVertexArrayVertexAttribLFormatEXT
|
||||
#define glVertexArrayVertexAttribBindingEXT gl3wVertexArrayVertexAttribBindingEXT
|
||||
#define glVertexArrayVertexBindingDivisorEXT gl3wVertexArrayVertexBindingDivisorEXT
|
||||
#define glFramebufferParameteri gl3wFramebufferParameteri
|
||||
#define glGetFramebufferParameteriv gl3wGetFramebufferParameteriv
|
||||
#define glNamedFramebufferParameteriEXT gl3wNamedFramebufferParameteriEXT
|
||||
#define glGetNamedFramebufferParameterivEXT gl3wGetNamedFramebufferParameterivEXT
|
||||
#define glGetInternalformati64v gl3wGetInternalformati64v
|
||||
#define glInvalidateTexSubImage gl3wInvalidateTexSubImage
|
||||
#define glInvalidateTexImage gl3wInvalidateTexImage
|
||||
#define glInvalidateBufferSubData gl3wInvalidateBufferSubData
|
||||
#define glInvalidateBufferData gl3wInvalidateBufferData
|
||||
#define glInvalidateFramebuffer gl3wInvalidateFramebuffer
|
||||
#define glInvalidateSubFramebuffer gl3wInvalidateSubFramebuffer
|
||||
#define glMultiDrawArraysIndirect gl3wMultiDrawArraysIndirect
|
||||
#define glMultiDrawElementsIndirect gl3wMultiDrawElementsIndirect
|
||||
#define glGetProgramInterfaceiv gl3wGetProgramInterfaceiv
|
||||
#define glGetProgramResourceIndex gl3wGetProgramResourceIndex
|
||||
#define glGetProgramResourceName gl3wGetProgramResourceName
|
||||
#define glGetProgramResourceiv gl3wGetProgramResourceiv
|
||||
#define glGetProgramResourceLocation gl3wGetProgramResourceLocation
|
||||
#define glGetProgramResourceLocationIndex gl3wGetProgramResourceLocationIndex
|
||||
#define glShaderStorageBlockBinding gl3wShaderStorageBlockBinding
|
||||
#define glTexBufferRange gl3wTexBufferRange
|
||||
#define glTextureBufferRangeEXT gl3wTextureBufferRangeEXT
|
||||
#define glTexStorage2DMultisample gl3wTexStorage2DMultisample
|
||||
#define glTexStorage3DMultisample gl3wTexStorage3DMultisample
|
||||
#define glTextureStorage2DMultisampleEXT gl3wTextureStorage2DMultisampleEXT
|
||||
#define glTextureStorage3DMultisampleEXT gl3wTextureStorage3DMultisampleEXT
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
@@ -1,99 +0,0 @@
|
||||
#include "GLProgram.h"
|
||||
#include <stdint.h>
|
||||
#include <iostream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
GLProgram::GLProgram()
|
||||
{
|
||||
m_id = 0;
|
||||
}
|
||||
|
||||
GLProgram::~GLProgram()
|
||||
{
|
||||
if (m_id > 0)
|
||||
{
|
||||
glDeleteProgram(m_id);
|
||||
}
|
||||
}
|
||||
|
||||
bool GLProgram::create(const char *v_source, const char *f_source, ...)
|
||||
{
|
||||
va_list va;
|
||||
va_start(va, f_source);
|
||||
bool rv = createv(v_source, f_source, va);
|
||||
va_end(va);
|
||||
return rv;
|
||||
}
|
||||
|
||||
bool GLProgram::create(const uint8_t *v_source, const uint8_t *f_source, ...)
|
||||
{
|
||||
va_list va;
|
||||
va_start(va, f_source);
|
||||
bool rv = createv((const char *) v_source, (const char *) f_source, va);
|
||||
va_end(va);
|
||||
return rv;
|
||||
}
|
||||
|
||||
bool GLProgram::createv(const char *v_source, const char *f_source, va_list va)
|
||||
{
|
||||
if (v_source == NULL || f_source == NULL)
|
||||
return false;
|
||||
if (!m_v_shader.create(GL_VERTEX_SHADER, v_source))
|
||||
{
|
||||
cerr << "Failed vertex shader source:" << endl << v_source << endl;
|
||||
return false;
|
||||
}
|
||||
if (!m_f_shader.create(GL_FRAGMENT_SHADER, f_source))
|
||||
{
|
||||
cerr << "Failed fragment shader source:" << endl << f_source << endl;
|
||||
return false;
|
||||
}
|
||||
m_id = glCreateProgram();
|
||||
if (m_id <= 0)
|
||||
{
|
||||
cerr << "Error allocating GL program object" << endl;
|
||||
return false;
|
||||
}
|
||||
glAttachShader(m_id, m_v_shader.get_id());
|
||||
glAttachShader(m_id, m_f_shader.get_id());
|
||||
|
||||
for (;;)
|
||||
{
|
||||
const char *attribute_name = va_arg(va, const char *);
|
||||
if (attribute_name == NULL)
|
||||
break;
|
||||
GLuint attribute_index = va_arg(va, uint32_t);
|
||||
glBindAttribLocation(m_id, attribute_index, attribute_name);
|
||||
}
|
||||
|
||||
glLinkProgram(m_id);
|
||||
|
||||
GLint link_status;
|
||||
glGetProgramiv(m_id, GL_LINK_STATUS, &link_status);
|
||||
if (link_status != GL_TRUE)
|
||||
{
|
||||
GLint log_length;
|
||||
glGetProgramiv(m_id, GL_INFO_LOG_LENGTH, &log_length);
|
||||
if (log_length > 0)
|
||||
{
|
||||
char *log = new char[log_length];
|
||||
glGetProgramInfoLog(m_id, log_length, &log_length, log);
|
||||
cerr << "Program log:" << endl << log << endl;
|
||||
delete[] log;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
for (;;)
|
||||
{
|
||||
const char *uniform_name = va_arg(va, const char *);
|
||||
if (uniform_name == NULL)
|
||||
break;
|
||||
GLint loc = glGetUniformLocation(m_id, uniform_name);
|
||||
m_uniform_locations.push_back(loc);
|
||||
m_uniform_location_names[uniform_name] = loc;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
-30
@@ -1,30 +0,0 @@
|
||||
#ifndef GLPROGRAM_H
|
||||
#define GLPROGRAM_H
|
||||
|
||||
#include <stdarg.h>
|
||||
#include "GLShader.h"
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
|
||||
class GLProgram
|
||||
{
|
||||
public:
|
||||
GLProgram();
|
||||
~GLProgram();
|
||||
bool create(const char *v_source, const char *f_source, ...);
|
||||
bool create(const uint8_t *v_source, const uint8_t *f_source, ...);
|
||||
bool createv(const char *v_source, const char *f_source, va_list va);
|
||||
GLuint get_id() { return m_id; }
|
||||
void use() { glUseProgram(m_id); }
|
||||
GLint uniform(int i) { return m_uniform_locations[i]; }
|
||||
GLint uniform(const std::string & s) { return m_uniform_location_names[s]; }
|
||||
protected:
|
||||
GLuint m_id;
|
||||
GLShader m_v_shader;
|
||||
GLShader m_f_shader;
|
||||
std::vector<GLint> m_uniform_locations;
|
||||
std::map<std::string, GLint> m_uniform_location_names;
|
||||
};
|
||||
|
||||
#endif
|
||||
-59
@@ -1,59 +0,0 @@
|
||||
#include "GLShader.h"
|
||||
#include <iostream>
|
||||
|
||||
using namespace std;
|
||||
|
||||
GLShader::GLShader()
|
||||
{
|
||||
m_id = 0;
|
||||
}
|
||||
|
||||
GLShader::~GLShader()
|
||||
{
|
||||
if (m_id > 0)
|
||||
{
|
||||
glDeleteShader(m_id);
|
||||
}
|
||||
}
|
||||
|
||||
bool GLShader::create(GLenum shaderType, const char *source)
|
||||
{
|
||||
GLint status;
|
||||
|
||||
m_id = glCreateShader(shaderType);
|
||||
if (m_id > 0)
|
||||
{
|
||||
glShaderSource(m_id, 1, &source, NULL);
|
||||
|
||||
glCompileShader(m_id);
|
||||
|
||||
glGetShaderiv(m_id, GL_COMPILE_STATUS, &status);
|
||||
if (status == GL_TRUE)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
GLint log_length;
|
||||
cerr << "Error compiling ";
|
||||
switch (shaderType)
|
||||
{
|
||||
case GL_VERTEX_SHADER:
|
||||
cerr << "vertex";
|
||||
break;
|
||||
case GL_FRAGMENT_SHADER:
|
||||
cerr << "fragment";
|
||||
break;
|
||||
}
|
||||
cerr << " shader" << endl;
|
||||
glGetShaderiv(m_id, GL_INFO_LOG_LENGTH, &log_length);
|
||||
if (log_length > 0)
|
||||
{
|
||||
char * log = new char[log_length];
|
||||
glGetShaderInfoLog(m_id, log_length, &log_length, log);
|
||||
cerr << "Shader Log:" << endl << log << endl;
|
||||
delete[] log;
|
||||
}
|
||||
glDeleteShader(m_id);
|
||||
}
|
||||
return false;
|
||||
}
|
||||
-18
@@ -1,18 +0,0 @@
|
||||
#ifndef GLSHADER_H
|
||||
#define GLSHADER_H
|
||||
|
||||
#include "gl3w.h"
|
||||
|
||||
class GLShader
|
||||
{
|
||||
public:
|
||||
GLShader();
|
||||
~GLShader();
|
||||
bool create(GLenum shaderType, const char *source);
|
||||
GLuint get_id() { return m_id; }
|
||||
bool valid() { return m_id > 0; }
|
||||
protected:
|
||||
GLuint m_id;
|
||||
};
|
||||
|
||||
#endif
|
||||
@@ -1,5 +0,0 @@
|
||||
source "http://rubygems.org"
|
||||
|
||||
gem "rscons"
|
||||
gem "rake"
|
||||
gem "json"
|
||||
@@ -1,14 +0,0 @@
|
||||
GEM
|
||||
remote: http://rubygems.org/
|
||||
specs:
|
||||
json (1.8.1)
|
||||
rake (10.3.2)
|
||||
rscons (1.4.3)
|
||||
|
||||
PLATFORMS
|
||||
ruby
|
||||
|
||||
DEPENDENCIES
|
||||
json
|
||||
rake
|
||||
rscons
|
||||
@@ -1,15 +1,11 @@
|
||||
ifeq ($(OS),Windows_NT)
|
||||
GL_LIB := opengl32
|
||||
else
|
||||
GL_LIB := GL
|
||||
endif
|
||||
CFLAGS := $(shell freetype-config --cflags) $(shell sdl2-config --cflags)
|
||||
CXXFLAGS := $(CFLAGS)
|
||||
LDFLAGS := -l$(GL_LIB) -ldl -lfreetype $(shell sdl2-config --libs) $(shell freetype-config --libs)
|
||||
|
||||
freetype2gl3: gl3w.o freetype2gl3.o GLShader.o GLProgram.o
|
||||
$(CXX) -o $@ $^ $(LDFLAGS)
|
||||
.PHONY: build
|
||||
build:
|
||||
./waf build
|
||||
|
||||
.PHONY: clean
|
||||
clean:
|
||||
-rm -f freetype2gl3
|
||||
./waf clean
|
||||
|
||||
.PHONY: distclean
|
||||
distclean:
|
||||
./waf distclean
|
||||
-21
@@ -1,21 +0,0 @@
|
||||
require "bundler"
|
||||
Bundler.setup(:default)
|
||||
|
||||
require "rake/clean"
|
||||
require "rscons"
|
||||
|
||||
NAME = "freetype2gl3"
|
||||
|
||||
task :default do
|
||||
Rscons::Environment.new do |env|
|
||||
env.build_root = "build"
|
||||
env["LIBS"] += ["SDL2", "GL", "dl", "freetype"]
|
||||
env["CXXFLAGS"] += `freetype-config --cflags`.split(" ")
|
||||
env["LDFLAGS"] += `freetype-config --libs`.split(" ")
|
||||
env.Program("^/#{NAME}", Dir["*.{cc,c}"])
|
||||
end
|
||||
end
|
||||
|
||||
task :clean do
|
||||
Rscons.clean
|
||||
end
|
||||
@@ -0,0 +1,236 @@
|
||||
#include <SDL.h>
|
||||
#include <stdio.h>
|
||||
#include "glcxx.hpp"
|
||||
#include "GL3/gl3w.h"
|
||||
#include <iostream>
|
||||
#include "glm/glm.hpp"
|
||||
#include "glm/gtc/matrix_transform.hpp"
|
||||
|
||||
using namespace std;
|
||||
|
||||
std::shared_ptr<glcxx::Program> program;
|
||||
std::shared_ptr<glcxx::Buffer> cube_buffer;
|
||||
std::shared_ptr<glcxx::Array> cube_array;
|
||||
static struct
|
||||
{
|
||||
GLint ambient;
|
||||
GLint specular;
|
||||
GLint shininess;
|
||||
GLint tex;
|
||||
GLint projection;
|
||||
GLint modelview;
|
||||
} uniforms;
|
||||
glm::mat4 modelview;
|
||||
glm::mat4 projection;
|
||||
std::shared_ptr<glcxx::Texture> texture;
|
||||
GLubyte texture_data[16][16][4];
|
||||
|
||||
#define WIDTH 800
|
||||
#define HEIGHT 800
|
||||
|
||||
bool init(void)
|
||||
{
|
||||
glClearColor (0.0, 0.0, 0.0, 0.0);
|
||||
glEnable(GL_DEPTH_TEST);
|
||||
glEnable(GL_CULL_FACE);
|
||||
#if 0
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
#endif
|
||||
glViewport(0, 0, WIDTH, HEIGHT);
|
||||
try
|
||||
{
|
||||
program = glcxx::Program::create(
|
||||
glcxx::Shader::create_from_file(GL_VERTEX_SHADER, "cube.v.glsl"),
|
||||
glcxx::Shader::create_from_file(GL_FRAGMENT_SHADER, "cube.f.glsl"),
|
||||
"position", 0,
|
||||
"normal", 1,
|
||||
"tex_coord", 2);
|
||||
uniforms.ambient = program->get_uniform_location("ambient");
|
||||
uniforms.specular = program->get_uniform_location("specular");
|
||||
uniforms.shininess = program->get_uniform_location("shininess");
|
||||
uniforms.tex = program->get_uniform_location("tex");
|
||||
uniforms.projection = program->get_uniform_location("projection");
|
||||
uniforms.modelview = program->get_uniform_location("modelview");
|
||||
|
||||
cube_buffer = glcxx::Buffer::create(GL_ARRAY_BUFFER, GL_STATIC_DRAW,
|
||||
{-1, -1, 1, 0, 0, 1, 0, 0,
|
||||
1, -1, 1, 0, 0, 1, 1, 0,
|
||||
1, 1, 1, 0, 0, 1, 1, 1,
|
||||
-1, 1, 1, 0, 0, 1, 0, 1});
|
||||
cube_array = glcxx::Array::create();
|
||||
cube_array->bind();
|
||||
cube_buffer->bind();
|
||||
glEnableVertexAttribArray(0);
|
||||
glEnableVertexAttribArray(1);
|
||||
glEnableVertexAttribArray(2);
|
||||
glVertexAttribPointer(0, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(GLfloat), NULL);
|
||||
glVertexAttribPointer(1, 3, GL_FLOAT, GL_FALSE, 8 * sizeof(GLfloat), (void *)(3 * sizeof(GLfloat)));
|
||||
glVertexAttribPointer(2, 2, GL_FLOAT, GL_FALSE, 8 * sizeof(GLfloat), (void *)(6 * sizeof(GLfloat)));
|
||||
|
||||
projection = glm::perspective((float)(60.0 * M_PI / 180.0), (float)WIDTH / (float)HEIGHT, 0.1f, 1000.0f);
|
||||
|
||||
for (int i = 0; i < 16; i++)
|
||||
{
|
||||
for (int j = 0; j < 16; j++)
|
||||
{
|
||||
if (((j / 2) & 1) == ((i / 2) & 1))
|
||||
{
|
||||
texture_data[i][j][0] = 255;
|
||||
texture_data[i][j][1] = 255;
|
||||
texture_data[i][j][2] = 255;
|
||||
texture_data[i][j][3] = 255;
|
||||
}
|
||||
else
|
||||
{
|
||||
texture_data[i][j][0] = 100;
|
||||
texture_data[i][j][1] = 100;
|
||||
texture_data[i][j][2] = 100;
|
||||
texture_data[i][j][3] = 100;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
texture = glcxx::Texture::create();
|
||||
glActiveTexture(GL_TEXTURE0);
|
||||
texture->bind(GL_TEXTURE_2D);
|
||||
glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, 16, 16, 0, GL_RGBA, GL_UNSIGNED_BYTE, &texture_data[0][0][0]);
|
||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
|
||||
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
|
||||
}
|
||||
catch (glcxx::Error & e)
|
||||
{
|
||||
cerr << "glcxx error: " << e.what() << endl;
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
static void draw_cube()
|
||||
{
|
||||
static const struct
|
||||
{
|
||||
int counts;
|
||||
float axis[3];
|
||||
} rotations[] = {
|
||||
{0, {0, 0, 0}},
|
||||
{1, {1, 0, 0}},
|
||||
{2, {1, 0, 0}},
|
||||
{3, {1, 0, 0}},
|
||||
{1, {0, 1, 0}},
|
||||
{3, {0, 1, 0}},
|
||||
};
|
||||
|
||||
glm::mat4 modelview_backup = modelview;
|
||||
|
||||
program->use();
|
||||
cube_array->bind();
|
||||
|
||||
glUniform4f(uniforms.ambient, 0.2, 0.2, 0.2, 0.2);
|
||||
glUniform4f(uniforms.specular, 1.0, 1.0, 1.0, 1.0);
|
||||
glUniform1f(uniforms.shininess, 150.0);
|
||||
glUniform1i(uniforms.tex, 0);
|
||||
glUniformMatrix4fv(uniforms.projection, 1, GL_FALSE, &projection[0][0]);
|
||||
|
||||
for (unsigned int i = 0; i < sizeof(rotations) / sizeof(rotations[0]); i++)
|
||||
{
|
||||
if (rotations[i].counts > 0)
|
||||
{
|
||||
modelview = glm::rotate(modelview_backup,
|
||||
(float)(M_PI / 2.0 * rotations[i].counts),
|
||||
glm::vec3(rotations[i].axis[0],
|
||||
rotations[i].axis[1],
|
||||
rotations[i].axis[2]));
|
||||
}
|
||||
glUniformMatrix4fv(uniforms.modelview, 1, GL_FALSE, &modelview[0][0]);
|
||||
glDrawArrays(GL_TRIANGLE_FAN, 0, 4);
|
||||
}
|
||||
|
||||
modelview = modelview_backup;
|
||||
}
|
||||
|
||||
void display(SDL_Window * window)
|
||||
{
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
modelview = glm::lookAt(glm::vec3(-1, -8, 7),
|
||||
glm::vec3(0, 0, 0),
|
||||
glm::vec3(0, 0, 1));
|
||||
modelview = glm::rotate(modelview, (float)(SDL_GetTicks() / 1000.0), glm::vec3(0, 0, 1));
|
||||
modelview = glm::translate(modelview, glm::vec3(3, 0, 0));
|
||||
|
||||
draw_cube();
|
||||
|
||||
SDL_GL_SwapWindow(window);
|
||||
}
|
||||
|
||||
static SDL_Event UpdateEvent;
|
||||
|
||||
static Uint32 UpdateCallback(Uint32 interval, void * param)
|
||||
{
|
||||
SDL_PushEvent(&UpdateEvent);
|
||||
return interval;
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
if (SDL_Init(SDL_INIT_VIDEO | SDL_INIT_TIMER))
|
||||
{
|
||||
printf("Failed to initialize SDL!\n");
|
||||
return 1;
|
||||
}
|
||||
|
||||
atexit(SDL_Quit);
|
||||
|
||||
SDL_Window * window = SDL_CreateWindow(argv[0],
|
||||
SDL_WINDOWPOS_UNDEFINED,
|
||||
SDL_WINDOWPOS_UNDEFINED,
|
||||
WIDTH,
|
||||
HEIGHT,
|
||||
SDL_WINDOW_OPENGL);
|
||||
if (!window)
|
||||
{
|
||||
printf("Failed to create window!\n");
|
||||
SDL_Quit();
|
||||
return 2;
|
||||
}
|
||||
|
||||
(void)SDL_GL_CreateContext(window);
|
||||
|
||||
if (gl3wInit())
|
||||
{
|
||||
cerr << "Failed to initialize GL3W" << endl;
|
||||
return 2;
|
||||
}
|
||||
if (!gl3wIsSupported(3, 0))
|
||||
{
|
||||
cerr << "OpenGL 3.0 is not supported!" << endl;
|
||||
return 2;
|
||||
}
|
||||
|
||||
if (!init())
|
||||
{
|
||||
return 2;
|
||||
}
|
||||
|
||||
UpdateEvent.type = SDL_USEREVENT;
|
||||
UpdateEvent.user.code = 0;
|
||||
SDL_AddTimer(25, UpdateCallback, NULL);
|
||||
display(window);
|
||||
SDL_Event event;
|
||||
while (SDL_WaitEvent(&event))
|
||||
{
|
||||
if (event.type == SDL_QUIT)
|
||||
break;
|
||||
else if (event.type == SDL_KEYDOWN)
|
||||
{
|
||||
if (event.key.keysym.sym == SDLK_ESCAPE)
|
||||
break;
|
||||
if (event.key.keysym.sym == SDLK_RETURN)
|
||||
display(window);
|
||||
}
|
||||
else if (event.type == SDL_USEREVENT)
|
||||
{
|
||||
display(window);
|
||||
}
|
||||
}
|
||||
}
|
||||
+36
@@ -0,0 +1,36 @@
|
||||
|
||||
uniform vec4 ambient, specular;
|
||||
uniform float shininess;
|
||||
uniform sampler2D tex;
|
||||
|
||||
varying vec3 pos_i;
|
||||
varying vec3 normal_i;
|
||||
varying vec2 tex_coord_i;
|
||||
|
||||
void main(void)
|
||||
{
|
||||
vec3 n, lightDir;
|
||||
vec4 color;
|
||||
float NdotL, RdotEye;
|
||||
|
||||
lightDir = normalize(vec3(-0.1, 0, -0.9));
|
||||
vec4 texture_color = texture2D(tex, tex_coord_i);
|
||||
color = texture_color * ambient; /* ambient light */
|
||||
n = normalize(normal_i);
|
||||
|
||||
NdotL = dot(n, -lightDir);
|
||||
|
||||
if (NdotL > 0.0)
|
||||
{
|
||||
/* diffuse component */
|
||||
color += texture_color * NdotL;
|
||||
/* specular component */
|
||||
RdotEye = dot(normalize(-pos_i), normalize(reflect(-lightDir, n)));
|
||||
if (RdotEye > 0.0)
|
||||
{
|
||||
color += clamp(specular * pow(RdotEye, shininess), 0.0, 1.0);
|
||||
}
|
||||
}
|
||||
|
||||
gl_FragColor = color;
|
||||
}
|
||||
+19
@@ -0,0 +1,19 @@
|
||||
|
||||
uniform mat4 projection;
|
||||
uniform mat4 modelview;
|
||||
|
||||
attribute vec3 pos;
|
||||
attribute vec3 normal;
|
||||
attribute vec2 tex_coord;
|
||||
|
||||
varying vec3 pos_i;
|
||||
varying vec3 normal_i;
|
||||
varying vec2 tex_coord_i;
|
||||
|
||||
void main(void)
|
||||
{
|
||||
gl_Position = projection * modelview * vec4(pos, 1);
|
||||
pos_i = gl_Position.xyz;
|
||||
tex_coord_i = tex_coord;
|
||||
normal_i = (modelview * vec4(normal, 0)).xyz;
|
||||
}
|
||||
-174
@@ -1,174 +0,0 @@
|
||||
#include "gl3w.h"
|
||||
#include <SDL.h>
|
||||
#include <iostream>
|
||||
#include <ft2build.h>
|
||||
#include FT_FREETYPE_H
|
||||
#include "GLProgram.h"
|
||||
|
||||
using namespace std;
|
||||
|
||||
#define WIDTH 500
|
||||
#define HEIGHT 500
|
||||
|
||||
static FT_Library ft;
|
||||
static FT_Face face;
|
||||
static GLProgram program;
|
||||
static GLint uniform_tex;
|
||||
static GLint uniform_color;
|
||||
|
||||
const char vertex_shader[] =
|
||||
"#version 120\n"
|
||||
"\n"
|
||||
"attribute vec4 coord;\n"
|
||||
"\n"
|
||||
"varying vec2 tex_coord_i;\n"
|
||||
"\n"
|
||||
"void main(void)\n"
|
||||
"{\n"
|
||||
" gl_Position = vec4(coord.xy * 2.0 / 500.0, 0, 1);\n"
|
||||
" tex_coord_i = coord.zw;\n"
|
||||
"}\n";
|
||||
|
||||
const char fragment_shader[] =
|
||||
"varying vec2 tex_coord_i;\n"
|
||||
"\n"
|
||||
"uniform sampler2D tex;\n"
|
||||
"uniform vec4 color;\n"
|
||||
"\n"
|
||||
"void main(void)\n"
|
||||
"{\n"
|
||||
" gl_FragColor = vec4(1, 1, 1, texture2D(tex, tex_coord_i).a) * color;\n"
|
||||
"}\n";
|
||||
|
||||
void init(void)
|
||||
{
|
||||
glClearColor (0.0, 0.0, 0.0, 0.0);
|
||||
program.create(vertex_shader, fragment_shader,
|
||||
"coord", 0, NULL,
|
||||
"tex", "color", NULL);
|
||||
uniform_tex = program.uniform("tex");
|
||||
uniform_color = program.uniform("color");
|
||||
program.use();
|
||||
glEnable(GL_BLEND);
|
||||
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
|
||||
}
|
||||
|
||||
void display(SDL_Window * window)
|
||||
{
|
||||
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
|
||||
if (FT_Load_Char(face, 'h', FT_LOAD_RENDER) != 0)
|
||||
{
|
||||
cerr << "Failed to load character" << endl;
|
||||
}
|
||||
GLuint texture_id;
|
||||
glActiveTexture(GL_TEXTURE0);
|
||||
glGenTextures(1, &texture_id);
|
||||
glBindTexture(GL_TEXTURE_2D, texture_id);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_LINEAR);
|
||||
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_LINEAR);
|
||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
||||
glTexImage2D(GL_TEXTURE_2D,
|
||||
0,
|
||||
GL_ALPHA,
|
||||
face->glyph->bitmap.width,
|
||||
face->glyph->bitmap.rows,
|
||||
0,
|
||||
GL_ALPHA,
|
||||
GL_UNSIGNED_BYTE,
|
||||
face->glyph->bitmap.buffer);
|
||||
GLuint vbo;
|
||||
glGenBuffers(1, &vbo);
|
||||
glEnableVertexAttribArray(0);
|
||||
glBindBuffer(GL_ARRAY_BUFFER, vbo);
|
||||
glVertexAttribPointer(0, 4, GL_FLOAT, GL_FALSE, 0, 0);
|
||||
GLfloat color[4] = {1, 0.6, 0, 1.0};
|
||||
glUniform1i(uniform_tex, 0);
|
||||
glUniform4fv(uniform_color, 1, color);
|
||||
GLfloat box[4][4] = {
|
||||
{0, 0, 0, 0},
|
||||
{face->glyph->bitmap.width, 0, 1, 0},
|
||||
{0, -face->glyph->bitmap.rows, 0, 1},
|
||||
{face->glyph->bitmap.width, -face->glyph->bitmap.rows, 1, 1}
|
||||
};
|
||||
glBufferData(GL_ARRAY_BUFFER, sizeof(box), box, GL_STATIC_DRAW);
|
||||
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
|
||||
SDL_GL_SwapWindow(window);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
if (argc < 2)
|
||||
{
|
||||
cerr << "Usage: " << argv[0] << " <font>" << endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
if (SDL_Init(SDL_INIT_VIDEO))
|
||||
{
|
||||
cerr << "Failed to initialize SDL!" << endl;
|
||||
return 1;
|
||||
}
|
||||
|
||||
atexit(SDL_Quit);
|
||||
|
||||
SDL_Window * window = SDL_CreateWindow(argv[0],
|
||||
SDL_WINDOWPOS_UNDEFINED,
|
||||
SDL_WINDOWPOS_UNDEFINED,
|
||||
WIDTH,
|
||||
HEIGHT,
|
||||
SDL_WINDOW_OPENGL);
|
||||
if (!window)
|
||||
{
|
||||
cerr << "Failed to create window!" << endl;
|
||||
SDL_Quit();
|
||||
return 2;
|
||||
}
|
||||
|
||||
SDL_GLContext gl_context = SDL_GL_CreateContext(window);
|
||||
|
||||
if (gl3wInit() != 0)
|
||||
{
|
||||
cerr << "Failed to gl3wInit()" << endl;
|
||||
SDL_Quit();
|
||||
return 2;
|
||||
}
|
||||
|
||||
if (!gl3wIsSupported(3, 0))
|
||||
{
|
||||
cerr << "OpenGL 3.0 is not supported!" << endl;
|
||||
SDL_Quit();
|
||||
return 2;
|
||||
}
|
||||
|
||||
if (FT_Init_FreeType(&ft) != 0)
|
||||
{
|
||||
cerr << "Could not FT_Init_FreeType()" << endl;
|
||||
return 2;
|
||||
}
|
||||
|
||||
if (FT_New_Face(ft, argv[1], 0, &face) != 0)
|
||||
{
|
||||
cerr << "Could not load font " << argv[1] << endl;
|
||||
return 2;
|
||||
}
|
||||
|
||||
FT_Set_Pixel_Sizes(face, 0, 20);
|
||||
|
||||
init();
|
||||
display(window);
|
||||
SDL_Event event;
|
||||
while (SDL_WaitEvent(&event))
|
||||
{
|
||||
if (event.type == SDL_QUIT)
|
||||
break;
|
||||
else if (event.type == SDL_KEYDOWN)
|
||||
{
|
||||
if (event.key.keysym.sym == SDLK_ESCAPE)
|
||||
break;
|
||||
if (event.key.keysym.sym == SDLK_RETURN)
|
||||
display(window);
|
||||
}
|
||||
}
|
||||
}
|
||||
Submodule
+1
Submodule libs/glcxx added at c55c2ae3b5.
Submodule
+1
Submodule libs/glm added at be53cebcd3.
@@ -0,0 +1,170 @@
|
||||
#!/usr/bin/env python
|
||||
# encoding: ISO8859-1
|
||||
# Thomas Nagy, 2005-2016
|
||||
|
||||
"""
|
||||
Redistribution and use in source and binary forms, with or without
|
||||
modification, are permitted provided that the following conditions
|
||||
are met:
|
||||
|
||||
1. Redistributions of source code must retain the above copyright
|
||||
notice, this list of conditions and the following disclaimer.
|
||||
|
||||
2. Redistributions in binary form must reproduce the above copyright
|
||||
notice, this list of conditions and the following disclaimer in the
|
||||
documentation and/or other materials provided with the distribution.
|
||||
|
||||
3. The name of the author may not be used to endorse or promote products
|
||||
derived from this software without specific prior written permission.
|
||||
|
||||
THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR
|
||||
IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
|
||||
WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
|
||||
DISCLAIMED. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT,
|
||||
INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
|
||||
(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
|
||||
SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
|
||||
HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
|
||||
STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
|
||||
IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
|
||||
POSSIBILITY OF SUCH DAMAGE.
|
||||
"""
|
||||
|
||||
import os, sys, inspect
|
||||
|
||||
VERSION="1.8.20"
|
||||
REVISION="c859ca7dc3693011756f4edf45c36626"
|
||||
GIT="8e4f6ea5f13d692848c1225cab94bce59d0d9a19"
|
||||
INSTALL=''
|
||||
C1='#3'
|
||||
C2='#-'
|
||||
C3='#,'
|
||||
cwd = os.getcwd()
|
||||
join = os.path.join
|
||||
|
||||
|
||||
WAF='waf'
|
||||
def b(x):
|
||||
return x
|
||||
if sys.hexversion>0x300000f:
|
||||
WAF='waf3'
|
||||
def b(x):
|
||||
return x.encode()
|
||||
|
||||
def err(m):
|
||||
print(('\033[91mError: %s\033[0m' % m))
|
||||
sys.exit(1)
|
||||
|
||||
def unpack_wafdir(dir, src):
|
||||
f = open(src,'rb')
|
||||
c = 'corrupt archive (%d)'
|
||||
while 1:
|
||||
line = f.readline()
|
||||
if not line: err('run waf-light from a folder containing waflib')
|
||||
if line == b('#==>\n'):
|
||||
txt = f.readline()
|
||||
if not txt: err(c % 1)
|
||||
if f.readline() != b('#<==\n'): err(c % 2)
|
||||
break
|
||||
if not txt: err(c % 3)
|
||||
txt = txt[1:-1].replace(b(C1), b('\n')).replace(b(C2), b('\r')).replace(b(C3), b('\x00'))
|
||||
|
||||
import shutil, tarfile
|
||||
try: shutil.rmtree(dir)
|
||||
except OSError: pass
|
||||
try:
|
||||
for x in ('Tools', 'extras'):
|
||||
os.makedirs(join(dir, 'waflib', x))
|
||||
except OSError:
|
||||
err("Cannot unpack waf lib into %s\nMove waf in a writable directory" % dir)
|
||||
|
||||
os.chdir(dir)
|
||||
tmp = 't.bz2'
|
||||
t = open(tmp,'wb')
|
||||
try: t.write(txt)
|
||||
finally: t.close()
|
||||
|
||||
try:
|
||||
t = tarfile.open(tmp)
|
||||
except:
|
||||
try:
|
||||
os.system('bunzip2 t.bz2')
|
||||
t = tarfile.open('t')
|
||||
tmp = 't'
|
||||
except:
|
||||
os.chdir(cwd)
|
||||
try: shutil.rmtree(dir)
|
||||
except OSError: pass
|
||||
err("Waf cannot be unpacked, check that bzip2 support is present")
|
||||
|
||||
try:
|
||||
for x in t: t.extract(x)
|
||||
finally:
|
||||
t.close()
|
||||
|
||||
for x in ('Tools', 'extras'):
|
||||
os.chmod(join('waflib',x), 493)
|
||||
|
||||
if sys.hexversion<0x300000f:
|
||||
sys.path = [join(dir, 'waflib')] + sys.path
|
||||
import fixpy2
|
||||
fixpy2.fixdir(dir)
|
||||
|
||||
os.remove(tmp)
|
||||
os.chdir(cwd)
|
||||
|
||||
try: dir = unicode(dir, 'mbcs')
|
||||
except: pass
|
||||
try:
|
||||
from ctypes import windll
|
||||
windll.kernel32.SetFileAttributesW(dir, 2)
|
||||
except:
|
||||
pass
|
||||
|
||||
def test(dir):
|
||||
try:
|
||||
os.stat(join(dir, 'waflib'))
|
||||
return os.path.abspath(dir)
|
||||
except OSError:
|
||||
pass
|
||||
|
||||
def find_lib():
|
||||
src = os.path.abspath(inspect.getfile(inspect.getmodule(err)))
|
||||
base, name = os.path.split(src)
|
||||
|
||||
#devs use $WAFDIR
|
||||
w=test(os.environ.get('WAFDIR', ''))
|
||||
if w: return w
|
||||
|
||||
#waf-light
|
||||
if name.endswith('waf-light'):
|
||||
w = test(base)
|
||||
if w: return w
|
||||
err('waf-light requires waflib -> export WAFDIR=/folder')
|
||||
|
||||
dirname = '%s-%s-%s' % (WAF, VERSION, REVISION)
|
||||
for i in (INSTALL,'/usr','/usr/local','/opt'):
|
||||
w = test(i + '/lib/' + dirname)
|
||||
if w: return w
|
||||
|
||||
#waf-local
|
||||
dir = join(base, (sys.platform != 'win32' and '.' or '') + dirname)
|
||||
w = test(dir)
|
||||
if w: return w
|
||||
|
||||
#unpack
|
||||
unpack_wafdir(dir, src)
|
||||
return dir
|
||||
|
||||
wafdir = find_lib()
|
||||
sys.path.insert(0, wafdir)
|
||||
|
||||
if __name__ == '__main__':
|
||||
|
||||
from waflib import Scripting
|
||||
Scripting.waf_entry_point(cwd, VERSION, wafdir)
|
||||
|
||||
#==>
|
||||
#BZh91AY&SYE~ŸjQnÿÿÿ°#,Óÿÿÿÿÿÿÿÿÿÿÿ„ Y#,§%H4�#,`¨b÷{åÞ�#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,#,:)„´Û§5_Z]¶h.½në¾ñ�ݺj×ÑõëÈëJtØîôêÙ}öŽÔ–ÛSå÷ÓîL,ëU)Ã¥öáHäïov”Ç»žÇ»uªÞó·;Þ§tÕ]ôõzúo{îîîÞ ¼ÑݧªwžìÓ�»Ýò÷¼:è\O‹´úmvû=ÐÀ·pïºáO½óï#,#,#,t#,#,ϳ@0:-l _`#,}ßcƒË˜U5 nîè´î—q½ØtÐiîΕ¡ªÓ´ôh;ÛÝÐ{›h#3t=9í݆…µ0’$J€ #3õ¥c@E4I P¯Z$–‡®$×Û{{›cï0ö©°ëÝ7¶÷†÷{½@ï{ÞÔìÒvÐ*Yk-¾»Õ6[ÓN®æñνv÷}gm¶=ozÞ�o/wß5OvóxöÞûÙówyÝöïeZwnówkÚÕÚÎn¹]õàójSv#,4/{vÌ€5@#3އN޹³ÞÏly×]¾ûï&A ¡W|稀“Ó ov»Ë#3^ÀdU(‰ë(#,ê+ X¶�+®¬Z!îî^æÏx#,Ø=w¶õîw>}îô…#,¶}k¬[Y�§;ÏxãÜ;{ïz=k{vÇUÙ<æ‡F±ÛÐßw½ÈN3åZi}çšdç×Y}ÙÒ{ÙÍ5)Nûï=ŸWnÜyוҧ»'½½ïÆ÷ÏomìÌû�îóÕÞ÷·¶Û½ï^í_{ÜÔ{Ùî÷Úó{ÔîîÝn–Û�ïyÜ}]”ZÊíÀ»ëî2iFOô¢™ëÚѶÞ3·r»ê)Q,ÜÙÝÇÍ«Ý÷x�Ùßwq>Þíç§«Ì}óvöi÷ÜûÄ›îÐöÎ=çž�¥£}zz^Ÿ¬#,ou¾æò}Ã`/—ÞÛk[ƒÅ#,%#3…P ¶:ÝÎwhÙRw;Y´8çGO»oò;¢Õ¾ìŽ3uÓEƒ»®Yªnõga¥GW{´»wm#,#,ööã©#,#,ov·¾÷ß3é_w“‘ÝÍÖ¦z}ç¼öﮞñ÷¼GEòGqGn커mÖv«ë={ïv÷»×»Ìl±b7:"=]ï5g¶Í³Žß{¸x–†š=îîîêºëÞë½µè6ÙãÛ>ž©é…/òâo{î÷½»³¯W_vö#-²æçS#-¾ØùÖæ÷wv_/O“Ýöê8Õy·Å”Ê�”€ûtè+{z•ëÛ^�xµè3ë Ñx_Cï}lÃ=í}Íéïcß#,0zÕ]#3§}íÜéí÷o#-׳Þ_nì˜Þ¬m®ôëÚ÷×KÐù…}�½eíë¯jÚûˆ{ÞÙ÷;ž«ë{nîhÛ]õÝÎÆŽíw{Ϋè>çO¯(é†àÜ®½½yì÷ѾÀw°#,è ³—1®�8PÐ6Æ97™Þ¯‹îïx¨€=uTžJû³§Û`1×mq°îµk©ëþ¸z}÷ß{º·N¹·[pvÒ¥)E×\£Šèm§'»ºi¯®·hæ=©¾™{ëóØëÛ¼óßoŸ{×½|l>úWvî狀ç;ê0‹fîÔ:}öp“Ú뵄Rê®ös¶}î÷¦ÞÔ$úõï—ewwn5âëž»O7�}È;áÜ%4�#, d#,&€& d2‚žSdMêCG”ÐÓÔѦž¦†š<š›PJh‚dÔÚT÷©•?SÑ=MLM¨SƒÒb4hh#,#,#,#,#,�HH!š!©‰“!=TýSõOÓA¦”Ú#-Cjd~”#,#,#,#,€#,#,z¥P$Ú5#-ªy)ê?Bj=&Lš¡ #-�£M4@#,#,#,#,#,#,‰!#,#, ˜D2 é¢djx OIêlˆ@#,2#,#,&¢ €@ 4˜™#3Ÿ™SÊz#)úž¨< õ§êž§êz§ê†€ #,#,õ_è[m_ÿsëEsksë™ý.ÛS¨™¤)ôíµvè¦ d‘Š’#3A� y�€‚|²'ãùþŸ¯ô¹ýx¦zu1xxy0©FŒV‹Q7j®‰É™›œnÇ u[¹þ±ôúŸh‹_¹ ÊI#,'d9U™Q9Ð*Åb#3±äÒŒ‚¢.¥éxç�t]3dÓMGÎdËÎ=a&Ìšz|9y·8Ööóx]ó$˜[+˜šÄŸ�#3úÎ`)`,ŠFÝMV–Õh«hƵ¶*¬ÝT*�T‘U‚€ó#3LÈ*x*€«eB(¶ #,ºtÛ^[VÒµ¥»£TkÚ¶¾íU«TÈ$#3 ÌKM12!£´lʈ’š‘,dI)F”Sm%B*d’ÅÂhÚšŠ¤ Â"PL™¢l¡l¦2VemIcBi…(*4‘I±ŠShŠJRÒ™¢,´�l“Á”‘Kb‹h´š j¥•±5(ÉAI(¦”HÂÌÔZ5ÓVÒ«R’mDÉ™2hتµ+XÍ0Í™¦mIc4Û`–•DHÔµ4É©…‘L’j6�‘©V“Y©4š#-2J4Ii ´RšÆHfÉ¢`…‚ŒÍ4Æi±‰‚TÒÁ!bÌÄ6&D¢$¡²mIE,@B+&†HŒÈBFYšX¤ÉÒaŒ”Ò[IQh6˜Ô©Y&(ÓH°¢ID›"”LbÄÅA²e6ŠI–�ÊHšYR3%J(¦dXÛ!PÈ¢XQI "Ø‹I`lÔd‚¢‰(¨ÔDR͈$“RX¤Å &R1’dÍ„[2¦A°•!BT›!$šJÁ‰),Yf`Ù´FšF�„”BÊHIš#-"Rš¥›1RŠe˜dÒÉ54Ê4ÒÅ%™2²1$Š-#,ËK$#3‰,!² ÓfPcQ³HØÃ)¥‰)¦ƒC™¤Qf"5&JM i¤¥–�T¨¨¢aAEÁdDIJ#3c„‘’f(#,ÑÊ™–Ò"°¥RÊT�“!JB›Ii(¶HÖ4“$’„¢ÉMd[ £fC&hˆÃd“eI¦SQŒe•ÌÒ˜„†(TÉ¢*hŒY©±I”Y1%"•$�²Š™%4Á@ƈÚRdÙI3#-“dÑ“!PÒ0!Še”¬¤Ãh,›% I�‰’É”d"™ ÉL¤e‰˜KIJ¦ÍE¡2‚dJHƒj1li&k"†“I#*4†Š#,•Š5Š–L(Ö2ÍL‘3E“Ë"%b–@�%%Fi#-šÚ•U‚‹c•4IAŒ¤�)’™&4š6ÉiK4iŠLÆS4²¤ÙK¦F6É(Щ²Œ¤f�#-6ZýÆ×cHYZJBT£%5�Z+Š�’LÒ¢&™(ÒZ#3�„T’µ164±Ë)HJ’5˜ØÈAP–¡6ÑdSY2L´¨Ò-%1©iS$i1a™”ªÍ,¡YR*•JÅ6Q%•M«&¤F¶M2²%I¨JÙ*ÊÊRša[1CLˆ±´ÔIi(ÒQ,k�S6‹a-´ƒ6¬$jMlm%£4ÌCTRƒF¬UÔ†Ö!5“#3#[5&†SQH&‹CR‰M©lFѲI¬cR5¤”µ•m4¢Â6V“dba›6È“2ššP¤™mSj)i)MK*Kiªm%ªi‰1k*e,›ifÚlÅ£Fkf³3$šË°jM´µ•!±µ4¢ˆ€Ä3Q¤£H˜Å!!ˆBÐP“0)mRD¤ÔS)ª6”šXÔdÉ ÒS(¤Rʈؤ–Tˆš)‚™(ÖSf†,HJEE¢Ì�Æ)Y©,6̳4³¦#3�Љ‘M$dÆÁ„,IJ›FÄšJ2fƒH³(µ3%LSE&Ѧ6#-¥EŒÃ3j,”&ÄQHcSM£0³6Š‹hFŒlšš)0V²ÐPˆÑY2JJdÊl-ˆS5(“$›-(„ª‹-Iš#a±©M&Ìm&Qf’±lA!’0IFFdÙI4%I©2”lÍ1&¥²Í‹AYK4›&Æ%Eh¤¦fM™kI2R–‹"Fl‘ fDÆ‹JhŒQYdÙ)¡‰ˆšM$$mˆÕ Q´j4Q¶"´Æ“#-$Ë(,šE¢˜TS$�,X5JÊI5!@Tk&adÒÊdi…i66Ú6’Ö$Ñ¡2Í´‘i-ŠƒFX)6¥(•¢ØÒ“4!Q²LÖdT‘%F’4E–U©�šŠÆLL¬•M)B£JJhŠ$©bT”ÊR�¶ÁjH¢ÉFÉTa”l–6ÉI©66Õ)¢’Š”Õ!jMІ’fɤ¨°Ò‘,ZA))ŒÑƒi0f…ƒU(��%”¬LF”–ŠÑ�dŠÉl2J(Ác)lFÑYI(©#,ÐbŠL&((´¦©M¦j-±¬VÍ1Y-f�¢©š’‹Å(#(-,"JFÉL0elAFØØ¶��)d†Z ¬`2j-#3Ñ3l³j6‹EE¬d“Z‘FlÙ#-,¬J£‹2ÅTÔ”�²Œ±¢”M$l lV ,i-’ØÖJ-Ik›JfQ¤Ú,)”hÛZ¥m¤c*M%L¢Ñ±´0-’ÒÙ&ÚLfKdÙ*-¨Ñ%´V�lZ6ÛFÕ#3Y6¶"Õ5+-¢Q”P6’cKblÓb¤�–EEÌlI‰$ÊI‘%RIŒB_÷ßñO÷Óû�ÿK6͘ª=¹ ´ÈÉ‹©{OõÚ’Ø•ûrÚ.%2.…T"bbÏñOðAf?ßýôkMAš\j£ÿn2Å?¿ÜQ,Cµ ÇzÓoSÑŠ±4Òé�Ü–#3W4ÎÌEuÁÉ#,Gd£ü¿ŸÏ\aï,þÛ´?ìy–dÿWù¹òÇøn¬e㌺¢©‘K;«¹F#Âv%„"Né»s‡ÛÁ¾,>?›KßV£#3g…ÔÂ!E·–›AØ1tÒöõxQ¦>HÞâ#�ã´t„º¢°YWVÚ¶…ˆ°yÔ)ÁQÅTUva¥¥di2Ó†Y×[#¾÷”ÝÛnËÅð¯ç®|«áéþ^ÊõWÀ¹¹hØÖÍÕ}w^Iç*$µß=]娼î´Oæu|ùÕ2øni,X%�]–¬rÔk{–ýÊ?ä\ Za6 kUíI³,b¨©î£-ŒE‹ñÿ–ýÕ£0#3�£z¤õ2„0†“Ç:�îr@SVª’[Ê!ˆü³Œà?ÄC²j<F�Œií4õjf|¡¨M†È.�`ÅÿšŸ&, @¶‡†ºÝ‚‘1ÞnZŠ*Šh[¸Ñ\Üɤ)5dƒQE ¾rÀåT+Êé<ÒFnÒBS)"žÚ”Ä¥&Ül�ùÙrç<÷$À"¶RÇ$¡ès(´„:†Px«ÕWÄõ^6ÝJ¯[¢bŒ2(=¾··¥‘‘Ô£GÙÔU£¥[ŽÝ|6òñ]óÝNê:W.Iºë±:ë¦.[†ú·—�þÍü˼‰`z%f†‰B0h•²•¸�iúê¢3×EküU¦:Óÿ=é‚eƒþÊ)6J(žu1¤Û*ÂäA�¡Gÿ)\Æw¿›$4ºˆÃ¶”lkõšÃ#,jªÒ?dœê«ì5Ûù"ëòö홸ŠÕk‡˜V|us$NÒŒ6Êj8Ú¹‰S½5N8Ô<8ÐâªZŒ9PÙ�ƒ‚-0ìì}‰hŒÒz®v»�Æ�GÄF}ìDx8fš´(ÚZ�ÚΚ‰™Ú†{M$ô@°´d<R–æéCûœ$ðf-¤ð,)`°KÓãî~X£d#3Œíl•X” ¥´-ù2êL|›·øµ¬a©i´wû¤Ká!¦ÚÆMö»M’Q‘¾î»_Šî�™ò3�”LºÙ\܉x¨r¹B/ý–—ÀªG›]¢¼rdp²¶ÓOöö…Å�‰ù‘½¶K©´QF�xæe“x×.[¯Ðòš�?‚ÆÞ«¾î¯ÖxLÏõöÿ]Úû/‹´c–æ�Wuqb1E�“†ZO{®Wžv„”42)Ñ¡‘VtåF Š'�®ñWMXÞ¯'ßïE)}.T~'Âó6Åq˜¯Üšëèë�¥Å%²a|ö®�ï}y4XÖ,š¾Éþ«x¾UÈÚýWP�yݦù}àÃç¨hüáÅb##,Ž4¹õÀ=zÕ�è¢sÉPÂ#]+k6CÉ#,ÀÁˆÃkèïÚy\Û©¾™u#Es‰c':¡I»¸ÈZoTZ!pYiZÔ'©%¬Xá*1L…'ui)»>I®¥#3ŠÀñª-¥DM{îùˆ�žÜðdž [×&�ý×iY&J¤`-<¬£“#-P´ÈÒ,�*¤·h�A*îx�¢Z2e¤.ª±E©J©ÜÑ”7ß±8W¥Ð¬çÝPôfG’÷Á,ñªmé¨h:¡Ùl>ûcŸ”מ†}Ü=û�Â%nŸXë.™`ñ,kŸ åB#*äú¡ 7qÌÇÏ[xT°<5B^N4\‘`F*#31Šï‘ƒ?i=¶¦!„"�6„QÆØ®,Çü Âü¯,>WsLine truncated
|
||||
#<==
|
||||
#-----BEGIN PGP SIGNATURE-----\nVersion: GnuPG v2\n\niQIcBAABCgAGBQJW3BWfAAoJEGelZe39+Q5kRU0P/iqc7D5tlzWrwTr9j9oQCMBa\n7HnJ+rYewgLX/zK07XgsIDa0OyNy7emdG+YRe2EYQHyn+V4QJl7VZLW8cbG0EJiY\n0Nfjhy6Dk28H9TA3vLkOwFkoQK/jYKFMARZhUOpdQYJ93xmHOkEF/o2Uoa3QtY6O\noouGuE+iU5RT0r675Sb7X4m8/Lcv1HO2EKhPG4dNWPUytupGVEA/eyDldIOViDN5\nYUc6Oa6yWOP9g88TjeeT4KcbpxneHAC8AOBRmMjR4/o2ioBX4mMHehJOuEXxJwoD\n4WE/jTQgf0icAmfm1okg/kJGXE+/QNgvWSfWxgL6/RLHwEA+DNrBI9u8rD3o2VLI\nHdcyvjWHJfEIWDowZY4XjbhJRvN1dthfcxfXMuBdBuEn275d+JoJZXhHCgvKMqTO\nkirZrlPcGESPNTiESvScOD3zrONpdKcWGbUaY2bI7nn+m/JwsEuueA8Me2l27R8M\nmUBycqxI5iHMLXEzQO2LztRVsx9tF23ReaLAj0mj9G32qjYwKiu49tPFrGywLlnq\nJpRZQGUH4AX51GEYed/9uzoTb0L8PbGuQhRYhtaSY+WT+nxq4gnrhm4v+rvcXGXi\nA440RRlTP2AqZXXNMUP03DV26/5O2zVzssPhtN9W5aNb07LJH3vj1cjiRp/m++Sa\nxGMK2mRBBCWRJ5m/YyrH\n=pYvc\n-----END PGP SIGNATURE-----\n
|
||||
@@ -0,0 +1,39 @@
|
||||
import os
|
||||
|
||||
def options(opt):
|
||||
opt.load("compiler_c compiler_cxx")
|
||||
|
||||
def configure(conf):
|
||||
conf.load("compiler_c compiler_cxx")
|
||||
conf.env.INCLUDES += ["libs/glcxx/include"]
|
||||
conf.env.INCLUDES += ["libs/glm"]
|
||||
conf.env.INCLUDES += ["."]
|
||||
conf.env.DEFINES += ['''GLCXX_GL_INCLUDE="GL3/gl3w.h"''']
|
||||
conf.env.CXXFLAGS += ["-Wall"]
|
||||
conf.env.CXXFLAGS += ["-std=gnu++14"]
|
||||
conf.check_cfg(package = "sdl2", args = "--cflags --libs")
|
||||
if "MINGW" in os.popen("uname").read():
|
||||
# TODO: set CXX to mingw32-g++
|
||||
pass
|
||||
if os.listdir("libs/glcxx") == []:
|
||||
print("Fetching git submodules...")
|
||||
from subprocess import Popen
|
||||
Popen(["git", "submodule", "update", "--init"]).wait()
|
||||
|
||||
def build(bld):
|
||||
sources = ["app.cc"] + \
|
||||
bld.path.ant_glob("libs/glcxx/src/**/*.cpp") + \
|
||||
bld.path.ant_glob("GL3/**/*.c")
|
||||
|
||||
libs = []
|
||||
if "MINGW" in os.popen("uname").read():
|
||||
libs += ["opengl32", "mingw32"]
|
||||
else:
|
||||
libs += ["dl", "GL"]
|
||||
bld.program(
|
||||
source = sources,
|
||||
target = "app",
|
||||
uselib = "SDL2",
|
||||
lib = libs,
|
||||
linkflags = ["-Wl,-rpath,$ORIGIN"],
|
||||
install_path = None)
|
||||
Reference in new issue
Block a user