aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2018-09-20 08:32:18 +0800
committerchai <chaifix@163.com>2018-09-20 08:32:18 +0800
commit6e81b7ddf8c0b378e983c1d2a1fb6f4b43d70d9a (patch)
tree5883254d23f5d2a53eb726e76545f282d8e9f688
parentb6f5c98a536186eb26c81d9fecdbbbc9860be93a (diff)
*update
-rw-r--r--build/05Font/05Font.vcxproj3
-rw-r--r--build/libjin/libjin.vcxproj8
-rw-r--r--build/libjin/libjin.vcxproj.filters18
-rw-r--r--libjin/3rdparty/ogl/OpenGL.h104
-rw-r--r--libjin/Graphics/Font.cpp24
-rw-r--r--libjin/Graphics/FontData.cpp4
-rw-r--r--libjin/Graphics/OpenGL.h341
-rw-r--r--libjin/Graphics/Shader.cpp9
-rw-r--r--libjin/Graphics/Shaders/base.shader.h (renamed from libjin/Graphics/base.shader.h)0
-rw-r--r--libjin/Graphics/Shaders/default.shader.h7
-rw-r--r--libjin/Graphics/Shaders/font.shader.h (renamed from libjin/Graphics/font.shader.h)2
-rw-r--r--test/05Font/main.cpp4
12 files changed, 474 insertions, 50 deletions
diff --git a/build/05Font/05Font.vcxproj b/build/05Font/05Font.vcxproj
index 5827205..2522097 100644
--- a/build/05Font/05Font.vcxproj
+++ b/build/05Font/05Font.vcxproj
@@ -22,7 +22,7 @@
<VCProjectVersion>15.0</VCProjectVersion>
<ProjectGuid>{D1953718-E728-4A86-9CCF-8BEC1F5C5F97}</ProjectGuid>
<RootNamespace>My05Font</RootNamespace>
- <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+ <WindowsTargetPlatformVersion>10.0.14393.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
@@ -98,6 +98,7 @@
<IntrinsicFunctions>true</IntrinsicFunctions>
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>$(SolutionDir)..\libjin\;$(SolutionDir)\lib\SDL2-2.0.5\include\</AdditionalIncludeDirectories>
+ <InlineFunctionExpansion>Default</InlineFunctionExpansion>
</ClCompile>
<Link>
<EnableCOMDATFolding>true</EnableCOMDATFolding>
diff --git a/build/libjin/libjin.vcxproj b/build/libjin/libjin.vcxproj
index 6cd4b76..cba0565 100644
--- a/build/libjin/libjin.vcxproj
+++ b/build/libjin/libjin.vcxproj
@@ -82,18 +82,19 @@
<ClInclude Include="..\..\libjin\Filesystem\Buffer.h" />
<ClInclude Include="..\..\libjin\Filesystem\Filesystem.h" />
<ClInclude Include="..\..\libjin\Game\Game.h" />
- <ClInclude Include="..\..\libjin\Graphics\base.shader.h" />
<ClInclude Include="..\..\libjin\Graphics\Bitmap.h" />
<ClInclude Include="..\..\libjin\Graphics\Canvas.h" />
<ClInclude Include="..\..\libjin\Graphics\Color.h" />
<ClInclude Include="..\..\libjin\Graphics\Drawable.h" />
<ClInclude Include="..\..\libjin\Graphics\Font.h" />
- <ClInclude Include="..\..\libjin\Graphics\font.shader.h" />
<ClInclude Include="..\..\libjin\Graphics\FontData.h" />
<ClInclude Include="..\..\libjin\Graphics\Graphics.h" />
<ClInclude Include="..\..\libjin\Graphics\Mesh.h" />
<ClInclude Include="..\..\libjin\Graphics\OpenGL.h" />
<ClInclude Include="..\..\libjin\Graphics\Shader.h" />
+ <ClInclude Include="..\..\libjin\Graphics\Shaders\base.shader.h" />
+ <ClInclude Include="..\..\libjin\Graphics\Shaders\default.shader.h" />
+ <ClInclude Include="..\..\libjin\Graphics\Shaders\font.shader.h" />
<ClInclude Include="..\..\libjin\Graphics\Shapes.h" />
<ClInclude Include="..\..\libjin\Graphics\Texture.h" />
<ClInclude Include="..\..\libjin\Graphics\Window.h" />
@@ -127,7 +128,7 @@
<ProjectGuid>{407E9199-D39C-4460-B218-0C29AB42483B}</ProjectGuid>
<Keyword>Win32Proj</Keyword>
<RootNamespace>libjin</RootNamespace>
- <WindowsTargetPlatformVersion>8.1</WindowsTargetPlatformVersion>
+ <WindowsTargetPlatformVersion>10.0.14393.0</WindowsTargetPlatformVersion>
</PropertyGroup>
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'" Label="Configuration">
@@ -230,6 +231,7 @@
<SDLCheck>true</SDLCheck>
<AdditionalIncludeDirectories>$(SolutionDir)\lib\SDL2-2.0.5\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<CompileAs>CompileAsCpp</CompileAs>
+ <InlineFunctionExpansion>Default</InlineFunctionExpansion>
</ClCompile>
<Link>
<SubSystem>Console</SubSystem>
diff --git a/build/libjin/libjin.vcxproj.filters b/build/libjin/libjin.vcxproj.filters
index c84c01f..390c495 100644
--- a/build/libjin/libjin.vcxproj.filters
+++ b/build/libjin/libjin.vcxproj.filters
@@ -58,6 +58,9 @@
<Filter Include="3rdparty\ogl2d">
<UniqueIdentifier>{01c41441-9b31-4a63-b3dd-18b4bfdf61ac}</UniqueIdentifier>
</Filter>
+ <Filter Include="Graphics\Shaders">
+ <UniqueIdentifier>{35881367-9a40-4391-9cc2-26d2ee869b8a}</UniqueIdentifier>
+ </Filter>
</ItemGroup>
<ItemGroup>
<ClCompile Include="..\..\libjin\3rdparty\GLee\GLee.c">
@@ -303,9 +306,6 @@
<ClInclude Include="..\..\libjin\Net\Socket.h">
<Filter>Net</Filter>
</ClInclude>
- <ClInclude Include="..\..\libjin\Graphics\base.shader.h">
- <Filter>Graphics</Filter>
- </ClInclude>
<ClInclude Include="..\..\libjin\Graphics\Bitmap.h">
<Filter>Graphics</Filter>
</ClInclude>
@@ -340,9 +340,6 @@
<ClInclude Include="..\..\libjin\Graphics\FontData.h">
<Filter>Graphics</Filter>
</ClInclude>
- <ClInclude Include="..\..\libjin\Graphics\font.shader.h">
- <Filter>Graphics</Filter>
- </ClInclude>
<ClInclude Include="..\..\libjin\Graphics\OpenGL.h">
<Filter>Graphics</Filter>
</ClInclude>
@@ -352,6 +349,15 @@
<ClInclude Include="..\..\libjin\3rdparty\ogl\OpenGL.h">
<Filter>3rdparty\ogl2d</Filter>
</ClInclude>
+ <ClInclude Include="..\..\libjin\Graphics\Shaders\font.shader.h">
+ <Filter>Graphics\Shaders</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\libjin\Graphics\Shaders\base.shader.h">
+ <Filter>Graphics\Shaders</Filter>
+ </ClInclude>
+ <ClInclude Include="..\..\libjin\Graphics\Shaders\default.shader.h">
+ <Filter>Graphics\Shaders</Filter>
+ </ClInclude>
</ItemGroup>
<ItemGroup>
<None Include="..\..\libjin\README.md" />
diff --git a/libjin/3rdparty/ogl/OpenGL.h b/libjin/3rdparty/ogl/OpenGL.h
index c4bc78a..dcd2168 100644
--- a/libjin/3rdparty/ogl/OpenGL.h
+++ b/libjin/3rdparty/ogl/OpenGL.h
@@ -7,32 +7,53 @@
class OpenGL
{
public:
- OpenGL() {};
- ~OpenGL() {};
-
- struct Texture
- {
- GLuint texture;
- GLint level;
- GLint internalformat;
- };
-
- struct Color8i { unsigned char r, g, b, a; };
- struct Color32f { float r, g, b, a; };
+ OpenGL();
+ ~OpenGL();
+ void pushColor(unsigned int r, unsigned int g, unsigned int b, unsigned int a);
+ void popColor();
+ void flushColor();
void flushError();
GLuint genTexture();
- void bindTexture(GLuint texture);
+ void bindTexture(GLuint texture = 0);
+ inline GLuint curTexture()
+ {
+ return _texture;
+ }
void setTexParameter(GLenum pname, GLint param);
+ void drawColor8i(unsigned char r, unsigned char g, unsigned char b, unsigned char a);
+ void drawColor32f(float r, float g, float b, float a);
+ void texImage(GLint internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels = NULL);
+ void texSubImage(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
+ void activeTexUnit(unsigned int unit = 0);
+ inline void vertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
+ {
+ glVertexPointer(size, type, stride, pointer);
+ }
+
+ inline void texCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer)
+ {
+ glTexCoordPointer(size, type, stride, pointer);
+ }
+
+ inline void drawArrays(GLenum mode, GLint first, GLsizei count)
+ {
+ glDrawArrays(mode, first, count);
+ }
+
+ inline void drawBuffer(GLenum mode)
+ {
- Texture genTexturex();
- void bindTexture(const Texture& texture);
+ }
- void drawColor(const Color8i color);
- void drawColor(const Color32f color);
+ inline void drawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices)
+ {
+
+ }
private:
- std::vector<Color8i> _color;
+ std::vector<unsigned int> _color;
+ GLuint _texture;
};
@@ -43,6 +64,38 @@ extern OpenGL gl;
OpenGL gl;
+OpenGL::OpenGL()
+{
+ _color.push_back((0xff << 24) | (0xff << 16) | (0xff << 8) | 0xff);
+}
+
+OpenGL::~OpenGL()
+{
+
+}
+
+void OpenGL::pushColor(unsigned int r, unsigned int g, unsigned int b, unsigned int a)
+{
+ unsigned int c = (r << 24) | (g << 16) | (b << 8) | a;
+ _color.push_back(c);
+ glColor4i(r, g, b, a);
+}
+
+void OpenGL::popColor()
+{
+ if (_color.size() == 1)
+ return;
+ _color.pop_back();
+ unsigned int c = _color.back();
+ glColor4i((c >> 24) & 0xff, (c >> 16) & 0xff, (c >> 8) & 0xff, c & 0xff);
+}
+
+void OpenGL::flushColor()
+{
+ while (_color.size() != 1)
+ _color.pop_back();
+}
+
void OpenGL::flushError()
{
while (glGetError() != GL_NO_ERROR);
@@ -65,6 +118,21 @@ void OpenGL::setTexParameter(GLenum pname, GLint param)
glTexParameteri(GL_TEXTURE_2D, pname, param);
}
+void OpenGL::texImage(GLint internalformat, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels)
+{
+ glTexImage2D(GL_TEXTURE_2D, 0, internalformat, width, height, 0, format, type, pixels);
+}
+
+void OpenGL::texSubImage(GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels)
+{
+ glTexSubImage2D(GL_TEXTURE_2D, 0, xoffset, yoffset, width, height, format, type, pixels);
+}
+
+void OpenGL::activeTexUnit(unsigned int unit)
+{
+ // glActiveTexture selects which texture unit subsequent texture state calls will affect.
+ glActiveTexture(GL_TEXTURE0 + unit);
+}
#endif // OGL2D_IMPLEMENT
diff --git a/libjin/Graphics/Font.cpp b/libjin/Graphics/Font.cpp
index 462fad8..b4fb76c 100644
--- a/libjin/Graphics/Font.cpp
+++ b/libjin/Graphics/Font.cpp
@@ -13,7 +13,7 @@ namespace jin
namespace graphics
{
- #include "font.shader.h"
+ #include "Shaders/font.shader.h"
using namespace std;
using namespace jin::math;
@@ -106,15 +106,15 @@ namespace graphics
gl.setTexParameter(GL_TEXTURE_MIN_FILTER, GL_LINEAR);
gl.setTexParameter(GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
gl.setTexParameter(GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE);
- glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA8, textureWidth, textureHeight, 0, GL_RGBA, GL_UNSIGNED_BYTE, NULL);
+ gl.texImage(GL_RGBA8, textureWidth, textureHeight, GL_RGBA, GL_UNSIGNED_BYTE);
if (glGetError() != GL_NO_ERROR)
{
glDeleteTextures(1, &t);
- glBindTexture(GL_TEXTURE_2D, 0);
+ gl.bindTexture(0);
return 0;
}
atlases.push_back(t);
- glBindTexture(GL_TEXTURE_2D, 0);
+ gl.bindTexture(0);
return t;
}
@@ -195,14 +195,14 @@ namespace graphics
for (int i = 0; i < glyphinfolist.size(); ++i)
{
const GlyphArrayDrawInfo& info = glyphinfolist[i];
- glBindTexture(GL_TEXTURE_2D, info.texture);
- glVertexPointer(2, GL_INT, sizeof(GlyphVertex), &glyphvertices[info.start].x);
- glTexCoordPointer(2, GL_FLOAT, sizeof(GlyphVertex), &glyphvertices[info.start].u);
+ gl.bindTexture(info.texture);
+ gl.vertexPointer(2, GL_INT, sizeof(GlyphVertex), &glyphvertices[info.start].x);
+ gl.texCoordPointer(2, GL_FLOAT, sizeof(GlyphVertex), &glyphvertices[info.start].u);
//#define font_debug
#if !defined(font_debug)
- glDrawArrays(GL_QUADS, 0, info.count);
+ gl.drawArrays(GL_QUADS, 0, info.count);
#endif
- glBindTexture(GL_TEXTURE_2D, 0);
+ gl.bindTexture(0);
}
#if defined(font_debug)
glBindTexture(GL_TEXTURE_2D, 1);
@@ -300,9 +300,9 @@ namespace graphics
cursor.y = 0;
}
}
- glBindTexture(GL_TEXTURE_2D, atlas);
- glTexSubImage2D(GL_TEXTURE_2D, 0, cursor.x + xoff, cursor.y + yoff + baseline, w, h, GL_RGBA, GL_UNSIGNED_BYTE, bitmap);
- glBindTexture(GL_TEXTURE_2D, 0);
+ gl.bindTexture(atlas);
+ gl.texSubImage(cursor.x + xoff, cursor.y + yoff + baseline, w, h, GL_RGBA, GL_UNSIGNED_BYTE, bitmap);
+ gl.bindTexture();
delete[] bitmap;
}
glyph->atlas = atlas;
diff --git a/libjin/Graphics/FontData.cpp b/libjin/Graphics/FontData.cpp
index 6a01081..168ac79 100644
--- a/libjin/Graphics/FontData.cpp
+++ b/libjin/Graphics/FontData.cpp
@@ -60,8 +60,8 @@ namespace graphics
float scale = scales.back();
int ascent;
stbtt_GetFontVMetrics(&info, &ascent, descent, 0);
- *baseline = (int)(ascent*scale);
- *descent = *baseline - (int)(*descent*scale);
+ *baseline = (int)(ascent*scale) + 1; // slight adjustment
+ *descent = *baseline - (int)(*descent*scale) + 1;
}
void FontData::getHMetrics(unsigned int codepoint, int* advanceWidth, int* leftSideBearing)
diff --git a/libjin/Graphics/OpenGL.h b/libjin/Graphics/OpenGL.h
index f03cea5..0a1c3e3 100644
--- a/libjin/Graphics/OpenGL.h
+++ b/libjin/Graphics/OpenGL.h
@@ -1,2 +1,343 @@
#include "../3rdparty/GLee/GLee.h"
#include "../3rdparty/ogl/OpenGL.h"
+
+/* GL.h
+
+WINGDIAPI void APIENTRY glAccum(GLenum op, GLfloat value);
+WINGDIAPI void APIENTRY glAlphaFunc(GLenum func, GLclampf ref);
+WINGDIAPI GLboolean APIENTRY glAreTexturesResident(GLsizei n, const GLuint *textures, GLboolean *residences);
+WINGDIAPI void APIENTRY glArrayElement(GLint i);
+WINGDIAPI void APIENTRY glBegin(GLenum mode);
+WINGDIAPI void APIENTRY glBindTexture(GLenum target, GLuint texture);
+WINGDIAPI void APIENTRY glBitmap(GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap);
+WINGDIAPI void APIENTRY glBlendFunc(GLenum sfactor, GLenum dfactor);
+WINGDIAPI void APIENTRY glCallList(GLuint list);
+WINGDIAPI void APIENTRY glCallLists(GLsizei n, GLenum type, const GLvoid *lists);
+WINGDIAPI void APIENTRY glClear(GLbitfield mask);
+WINGDIAPI void APIENTRY glClearAccum(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+WINGDIAPI void APIENTRY glClearColor(GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha);
+WINGDIAPI void APIENTRY glClearDepth(GLclampd depth);
+WINGDIAPI void APIENTRY glClearIndex(GLfloat c);
+WINGDIAPI void APIENTRY glClearStencil(GLint s);
+WINGDIAPI void APIENTRY glClipPlane(GLenum plane, const GLdouble *equation);
+WINGDIAPI void APIENTRY glColor3b(GLbyte red, GLbyte green, GLbyte blue);
+WINGDIAPI void APIENTRY glColor3bv(const GLbyte *v);
+WINGDIAPI void APIENTRY glColor3d(GLdouble red, GLdouble green, GLdouble blue);
+WINGDIAPI void APIENTRY glColor3dv(const GLdouble *v);
+WINGDIAPI void APIENTRY glColor3f(GLfloat red, GLfloat green, GLfloat blue);
+WINGDIAPI void APIENTRY glColor3fv(const GLfloat *v);
+WINGDIAPI void APIENTRY glColor3i(GLint red, GLint green, GLint blue);
+WINGDIAPI void APIENTRY glColor3iv(const GLint *v);
+WINGDIAPI void APIENTRY glColor3s(GLshort red, GLshort green, GLshort blue);
+WINGDIAPI void APIENTRY glColor3sv(const GLshort *v);
+WINGDIAPI void APIENTRY glColor3ub(GLubyte red, GLubyte green, GLubyte blue);
+WINGDIAPI void APIENTRY glColor3ubv(const GLubyte *v);
+WINGDIAPI void APIENTRY glColor3ui(GLuint red, GLuint green, GLuint blue);
+WINGDIAPI void APIENTRY glColor3uiv(const GLuint *v);
+WINGDIAPI void APIENTRY glColor3us(GLushort red, GLushort green, GLushort blue);
+WINGDIAPI void APIENTRY glColor3usv(const GLushort *v);
+WINGDIAPI void APIENTRY glColor4b(GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha);
+WINGDIAPI void APIENTRY glColor4bv(const GLbyte *v);
+WINGDIAPI void APIENTRY glColor4d(GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha);
+WINGDIAPI void APIENTRY glColor4dv(const GLdouble *v);
+WINGDIAPI void APIENTRY glColor4f(GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha);
+WINGDIAPI void APIENTRY glColor4fv(const GLfloat *v);
+WINGDIAPI void APIENTRY glColor4i(GLint red, GLint green, GLint blue, GLint alpha);
+WINGDIAPI void APIENTRY glColor4iv(const GLint *v);
+WINGDIAPI void APIENTRY glColor4s(GLshort red, GLshort green, GLshort blue, GLshort alpha);
+WINGDIAPI void APIENTRY glColor4sv(const GLshort *v);
+WINGDIAPI void APIENTRY glColor4ub(GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha);
+WINGDIAPI void APIENTRY glColor4ubv(const GLubyte *v);
+WINGDIAPI void APIENTRY glColor4ui(GLuint red, GLuint green, GLuint blue, GLuint alpha);
+WINGDIAPI void APIENTRY glColor4uiv(const GLuint *v);
+WINGDIAPI void APIENTRY glColor4us(GLushort red, GLushort green, GLushort blue, GLushort alpha);
+WINGDIAPI void APIENTRY glColor4usv(const GLushort *v);
+WINGDIAPI void APIENTRY glColorMask(GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha);
+WINGDIAPI void APIENTRY glColorMaterial(GLenum face, GLenum mode);
+WINGDIAPI void APIENTRY glColorPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+WINGDIAPI void APIENTRY glCopyPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum type);
+WINGDIAPI void APIENTRY glCopyTexImage1D(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLint border);
+WINGDIAPI void APIENTRY glCopyTexImage2D(GLenum target, GLint level, GLenum internalFormat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border);
+WINGDIAPI void APIENTRY glCopyTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width);
+WINGDIAPI void APIENTRY glCopyTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height);
+WINGDIAPI void APIENTRY glCullFace(GLenum mode);
+WINGDIAPI void APIENTRY glDeleteLists(GLuint list, GLsizei range);
+WINGDIAPI void APIENTRY glDeleteTextures(GLsizei n, const GLuint *textures);
+WINGDIAPI void APIENTRY glDepthFunc(GLenum func);
+WINGDIAPI void APIENTRY glDepthMask(GLboolean flag);
+WINGDIAPI void APIENTRY glDepthRange(GLclampd zNear, GLclampd zFar);
+WINGDIAPI void APIENTRY glDisable(GLenum cap);
+WINGDIAPI void APIENTRY glDisableClientState(GLenum array);
+WINGDIAPI void APIENTRY glDrawArrays(GLenum mode, GLint first, GLsizei count);
+WINGDIAPI void APIENTRY glDrawBuffer(GLenum mode);
+WINGDIAPI void APIENTRY glDrawElements(GLenum mode, GLsizei count, GLenum type, const GLvoid *indices);
+WINGDIAPI void APIENTRY glDrawPixels(GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
+WINGDIAPI void APIENTRY glEdgeFlag(GLboolean flag);
+WINGDIAPI void APIENTRY glEdgeFlagPointer(GLsizei stride, const GLvoid *pointer);
+WINGDIAPI void APIENTRY glEdgeFlagv(const GLboolean *flag);
+WINGDIAPI void APIENTRY glEnable(GLenum cap);
+WINGDIAPI void APIENTRY glEnableClientState(GLenum array);
+WINGDIAPI void APIENTRY glEnd(void);
+WINGDIAPI void APIENTRY glEndList(void);
+WINGDIAPI void APIENTRY glEvalCoord1d(GLdouble u);
+WINGDIAPI void APIENTRY glEvalCoord1dv(const GLdouble *u);
+WINGDIAPI void APIENTRY glEvalCoord1f(GLfloat u);
+WINGDIAPI void APIENTRY glEvalCoord1fv(const GLfloat *u);
+WINGDIAPI void APIENTRY glEvalCoord2d(GLdouble u, GLdouble v);
+WINGDIAPI void APIENTRY glEvalCoord2dv(const GLdouble *u);
+WINGDIAPI void APIENTRY glEvalCoord2f(GLfloat u, GLfloat v);
+WINGDIAPI void APIENTRY glEvalCoord2fv(const GLfloat *u);
+WINGDIAPI void APIENTRY glEvalMesh1(GLenum mode, GLint i1, GLint i2);
+WINGDIAPI void APIENTRY glEvalMesh2(GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2);
+WINGDIAPI void APIENTRY glEvalPoint1(GLint i);
+WINGDIAPI void APIENTRY glEvalPoint2(GLint i, GLint j);
+WINGDIAPI void APIENTRY glFeedbackBuffer(GLsizei size, GLenum type, GLfloat *buffer);
+WINGDIAPI void APIENTRY glFinish(void);
+WINGDIAPI void APIENTRY glFlush(void);
+WINGDIAPI void APIENTRY glFogf(GLenum pname, GLfloat param);
+WINGDIAPI void APIENTRY glFogfv(GLenum pname, const GLfloat *params);
+WINGDIAPI void APIENTRY glFogi(GLenum pname, GLint param);
+WINGDIAPI void APIENTRY glFogiv(GLenum pname, const GLint *params);
+WINGDIAPI void APIENTRY glFrontFace(GLenum mode);
+WINGDIAPI void APIENTRY glFrustum(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+WINGDIAPI GLuint APIENTRY glGenLists(GLsizei range);
+WINGDIAPI void APIENTRY glGenTextures(GLsizei n, GLuint *textures);
+WINGDIAPI void APIENTRY glGetBooleanv(GLenum pname, GLboolean *params);
+WINGDIAPI void APIENTRY glGetClipPlane(GLenum plane, GLdouble *equation);
+WINGDIAPI void APIENTRY glGetDoublev(GLenum pname, GLdouble *params);
+WINGDIAPI GLenum APIENTRY glGetError(void);
+WINGDIAPI void APIENTRY glGetFloatv(GLenum pname, GLfloat *params);
+WINGDIAPI void APIENTRY glGetIntegerv(GLenum pname, GLint *params);
+WINGDIAPI void APIENTRY glGetLightfv(GLenum light, GLenum pname, GLfloat *params);
+WINGDIAPI void APIENTRY glGetLightiv(GLenum light, GLenum pname, GLint *params);
+WINGDIAPI void APIENTRY glGetMapdv(GLenum target, GLenum query, GLdouble *v);
+WINGDIAPI void APIENTRY glGetMapfv(GLenum target, GLenum query, GLfloat *v);
+WINGDIAPI void APIENTRY glGetMapiv(GLenum target, GLenum query, GLint *v);
+WINGDIAPI void APIENTRY glGetMaterialfv(GLenum face, GLenum pname, GLfloat *params);
+WINGDIAPI void APIENTRY glGetMaterialiv(GLenum face, GLenum pname, GLint *params);
+WINGDIAPI void APIENTRY glGetPixelMapfv(GLenum map, GLfloat *values);
+WINGDIAPI void APIENTRY glGetPixelMapuiv(GLenum map, GLuint *values);
+WINGDIAPI void APIENTRY glGetPixelMapusv(GLenum map, GLushort *values);
+WINGDIAPI void APIENTRY glGetPointerv(GLenum pname, GLvoid* *params);
+WINGDIAPI void APIENTRY glGetPolygonStipple(GLubyte *mask);
+WINGDIAPI const GLubyte * APIENTRY glGetString(GLenum name);
+WINGDIAPI void APIENTRY glGetTexEnvfv(GLenum target, GLenum pname, GLfloat *params);
+WINGDIAPI void APIENTRY glGetTexEnviv(GLenum target, GLenum pname, GLint *params);
+WINGDIAPI void APIENTRY glGetTexGendv(GLenum coord, GLenum pname, GLdouble *params);
+WINGDIAPI void APIENTRY glGetTexGenfv(GLenum coord, GLenum pname, GLfloat *params);
+WINGDIAPI void APIENTRY glGetTexGeniv(GLenum coord, GLenum pname, GLint *params);
+WINGDIAPI void APIENTRY glGetTexImage(GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels);
+WINGDIAPI void APIENTRY glGetTexLevelParameterfv(GLenum target, GLint level, GLenum pname, GLfloat *params);
+WINGDIAPI void APIENTRY glGetTexLevelParameteriv(GLenum target, GLint level, GLenum pname, GLint *params);
+WINGDIAPI void APIENTRY glGetTexParameterfv(GLenum target, GLenum pname, GLfloat *params);
+WINGDIAPI void APIENTRY glGetTexParameteriv(GLenum target, GLenum pname, GLint *params);
+WINGDIAPI void APIENTRY glHint(GLenum target, GLenum mode);
+WINGDIAPI void APIENTRY glIndexMask(GLuint mask);
+WINGDIAPI void APIENTRY glIndexPointer(GLenum type, GLsizei stride, const GLvoid *pointer);
+WINGDIAPI void APIENTRY glIndexd(GLdouble c);
+WINGDIAPI void APIENTRY glIndexdv(const GLdouble *c);
+WINGDIAPI void APIENTRY glIndexf(GLfloat c);
+WINGDIAPI void APIENTRY glIndexfv(const GLfloat *c);
+WINGDIAPI void APIENTRY glIndexi(GLint c);
+WINGDIAPI void APIENTRY glIndexiv(const GLint *c);
+WINGDIAPI void APIENTRY glIndexs(GLshort c);
+WINGDIAPI void APIENTRY glIndexsv(const GLshort *c);
+WINGDIAPI void APIENTRY glIndexub(GLubyte c);
+WINGDIAPI void APIENTRY glIndexubv(const GLubyte *c);
+WINGDIAPI void APIENTRY glInitNames(void);
+WINGDIAPI void APIENTRY glInterleavedArrays(GLenum format, GLsizei stride, const GLvoid *pointer);
+WINGDIAPI GLboolean APIENTRY glIsEnabled(GLenum cap);
+WINGDIAPI GLboolean APIENTRY glIsList(GLuint list);
+WINGDIAPI GLboolean APIENTRY glIsTexture(GLuint texture);
+WINGDIAPI void APIENTRY glLightModelf(GLenum pname, GLfloat param);
+WINGDIAPI void APIENTRY glLightModelfv(GLenum pname, const GLfloat *params);
+WINGDIAPI void APIENTRY glLightModeli(GLenum pname, GLint param);
+WINGDIAPI void APIENTRY glLightModeliv(GLenum pname, const GLint *params);
+WINGDIAPI void APIENTRY glLightf(GLenum light, GLenum pname, GLfloat param);
+WINGDIAPI void APIENTRY glLightfv(GLenum light, GLenum pname, const GLfloat *params);
+WINGDIAPI void APIENTRY glLighti(GLenum light, GLenum pname, GLint param);
+WINGDIAPI void APIENTRY glLightiv(GLenum light, GLenum pname, const GLint *params);
+WINGDIAPI void APIENTRY glLineStipple(GLint factor, GLushort pattern);
+WINGDIAPI void APIENTRY glLineWidth(GLfloat width);
+WINGDIAPI void APIENTRY glListBase(GLuint base);
+WINGDIAPI void APIENTRY glLoadIdentity(void);
+WINGDIAPI void APIENTRY glLoadMatrixd(const GLdouble *m);
+WINGDIAPI void APIENTRY glLoadMatrixf(const GLfloat *m);
+WINGDIAPI void APIENTRY glLoadName(GLuint name);
+WINGDIAPI void APIENTRY glLogicOp(GLenum opcode);
+WINGDIAPI void APIENTRY glMap1d(GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points);
+WINGDIAPI void APIENTRY glMap1f(GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points);
+WINGDIAPI void APIENTRY glMap2d(GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points);
+WINGDIAPI void APIENTRY glMap2f(GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points);
+WINGDIAPI void APIENTRY glMapGrid1d(GLint un, GLdouble u1, GLdouble u2);
+WINGDIAPI void APIENTRY glMapGrid1f(GLint un, GLfloat u1, GLfloat u2);
+WINGDIAPI void APIENTRY glMapGrid2d(GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2);
+WINGDIAPI void APIENTRY glMapGrid2f(GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2);
+WINGDIAPI void APIENTRY glMaterialf(GLenum face, GLenum pname, GLfloat param);
+WINGDIAPI void APIENTRY glMaterialfv(GLenum face, GLenum pname, const GLfloat *params);
+WINGDIAPI void APIENTRY glMateriali(GLenum face, GLenum pname, GLint param);
+WINGDIAPI void APIENTRY glMaterialiv(GLenum face, GLenum pname, const GLint *params);
+WINGDIAPI void APIENTRY glMatrixMode(GLenum mode);
+WINGDIAPI void APIENTRY glMultMatrixd(const GLdouble *m);
+WINGDIAPI void APIENTRY glMultMatrixf(const GLfloat *m);
+WINGDIAPI void APIENTRY glNewList(GLuint list, GLenum mode);
+WINGDIAPI void APIENTRY glNormal3b(GLbyte nx, GLbyte ny, GLbyte nz);
+WINGDIAPI void APIENTRY glNormal3bv(const GLbyte *v);
+WINGDIAPI void APIENTRY glNormal3d(GLdouble nx, GLdouble ny, GLdouble nz);
+WINGDIAPI void APIENTRY glNormal3dv(const GLdouble *v);
+WINGDIAPI void APIENTRY glNormal3f(GLfloat nx, GLfloat ny, GLfloat nz);
+WINGDIAPI void APIENTRY glNormal3fv(const GLfloat *v);
+WINGDIAPI void APIENTRY glNormal3i(GLint nx, GLint ny, GLint nz);
+WINGDIAPI void APIENTRY glNormal3iv(const GLint *v);
+WINGDIAPI void APIENTRY glNormal3s(GLshort nx, GLshort ny, GLshort nz);
+WINGDIAPI void APIENTRY glNormal3sv(const GLshort *v);
+WINGDIAPI void APIENTRY glNormalPointer(GLenum type, GLsizei stride, const GLvoid *pointer);
+WINGDIAPI void APIENTRY glOrtho(GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble zNear, GLdouble zFar);
+WINGDIAPI void APIENTRY glPassThrough(GLfloat token);
+WINGDIAPI void APIENTRY glPixelMapfv(GLenum map, GLsizei mapsize, const GLfloat *values);
+WINGDIAPI void APIENTRY glPixelMapuiv(GLenum map, GLsizei mapsize, const GLuint *values);
+WINGDIAPI void APIENTRY glPixelMapusv(GLenum map, GLsizei mapsize, const GLushort *values);
+WINGDIAPI void APIENTRY glPixelStoref(GLenum pname, GLfloat param);
+WINGDIAPI void APIENTRY glPixelStorei(GLenum pname, GLint param);
+WINGDIAPI void APIENTRY glPixelTransferf(GLenum pname, GLfloat param);
+WINGDIAPI void APIENTRY glPixelTransferi(GLenum pname, GLint param);
+WINGDIAPI void APIENTRY glPixelZoom(GLfloat xfactor, GLfloat yfactor);
+WINGDIAPI void APIENTRY glPointSize(GLfloat size);
+WINGDIAPI void APIENTRY glPolygonMode(GLenum face, GLenum mode);
+WINGDIAPI void APIENTRY glPolygonOffset(GLfloat factor, GLfloat units);
+WINGDIAPI void APIENTRY glPolygonStipple(const GLubyte *mask);
+WINGDIAPI void APIENTRY glPopAttrib(void);
+WINGDIAPI void APIENTRY glPopClientAttrib(void);
+WINGDIAPI void APIENTRY glPopMatrix(void);
+WINGDIAPI void APIENTRY glPopName(void);
+WINGDIAPI void APIENTRY glPrioritizeTextures(GLsizei n, const GLuint *textures, const GLclampf *priorities);
+WINGDIAPI void APIENTRY glPushAttrib(GLbitfield mask);
+WINGDIAPI void APIENTRY glPushClientAttrib(GLbitfield mask);
+WINGDIAPI void APIENTRY glPushMatrix(void);
+WINGDIAPI void APIENTRY glPushName(GLuint name);
+WINGDIAPI void APIENTRY glRasterPos2d(GLdouble x, GLdouble y);
+WINGDIAPI void APIENTRY glRasterPos2dv(const GLdouble *v);
+WINGDIAPI void APIENTRY glRasterPos2f(GLfloat x, GLfloat y);
+WINGDIAPI void APIENTRY glRasterPos2fv(const GLfloat *v);
+WINGDIAPI void APIENTRY glRasterPos2i(GLint x, GLint y);
+WINGDIAPI void APIENTRY glRasterPos2iv(const GLint *v);
+WINGDIAPI void APIENTRY glRasterPos2s(GLshort x, GLshort y);
+WINGDIAPI void APIENTRY glRasterPos2sv(const GLshort *v);
+WINGDIAPI void APIENTRY glRasterPos3d(GLdouble x, GLdouble y, GLdouble z);
+WINGDIAPI void APIENTRY glRasterPos3dv(const GLdouble *v);
+WINGDIAPI void APIENTRY glRasterPos3f(GLfloat x, GLfloat y, GLfloat z);
+WINGDIAPI void APIENTRY glRasterPos3fv(const GLfloat *v);
+WINGDIAPI void APIENTRY glRasterPos3i(GLint x, GLint y, GLint z);
+WINGDIAPI void APIENTRY glRasterPos3iv(const GLint *v);
+WINGDIAPI void APIENTRY glRasterPos3s(GLshort x, GLshort y, GLshort z);
+WINGDIAPI void APIENTRY glRasterPos3sv(const GLshort *v);
+WINGDIAPI void APIENTRY glRasterPos4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+WINGDIAPI void APIENTRY glRasterPos4dv(const GLdouble *v);
+WINGDIAPI void APIENTRY glRasterPos4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+WINGDIAPI void APIENTRY glRasterPos4fv(const GLfloat *v);
+WINGDIAPI void APIENTRY glRasterPos4i(GLint x, GLint y, GLint z, GLint w);
+WINGDIAPI void APIENTRY glRasterPos4iv(const GLint *v);
+WINGDIAPI void APIENTRY glRasterPos4s(GLshort x, GLshort y, GLshort z, GLshort w);
+WINGDIAPI void APIENTRY glRasterPos4sv(const GLshort *v);
+WINGDIAPI void APIENTRY glReadBuffer(GLenum mode);
+WINGDIAPI void APIENTRY glReadPixels(GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels);
+WINGDIAPI void APIENTRY glRectd(GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2);
+WINGDIAPI void APIENTRY glRectdv(const GLdouble *v1, const GLdouble *v2);
+WINGDIAPI void APIENTRY glRectf(GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2);
+WINGDIAPI void APIENTRY glRectfv(const GLfloat *v1, const GLfloat *v2);
+WINGDIAPI void APIENTRY glRecti(GLint x1, GLint y1, GLint x2, GLint y2);
+WINGDIAPI void APIENTRY glRectiv(const GLint *v1, const GLint *v2);
+WINGDIAPI void APIENTRY glRects(GLshort x1, GLshort y1, GLshort x2, GLshort y2);
+WINGDIAPI void APIENTRY glRectsv(const GLshort *v1, const GLshort *v2);
+WINGDIAPI GLint APIENTRY glRenderMode(GLenum mode);
+WINGDIAPI void APIENTRY glRotated(GLdouble angle, GLdouble x, GLdouble y, GLdouble z);
+WINGDIAPI void APIENTRY glRotatef(GLfloat angle, GLfloat x, GLfloat y, GLfloat z);
+WINGDIAPI void APIENTRY glScaled(GLdouble x, GLdouble y, GLdouble z);
+WINGDIAPI void APIENTRY glScalef(GLfloat x, GLfloat y, GLfloat z);
+WINGDIAPI void APIENTRY glScissor(GLint x, GLint y, GLsizei width, GLsizei height);
+WINGDIAPI void APIENTRY glSelectBuffer(GLsizei size, GLuint *buffer);
+WINGDIAPI void APIENTRY glShadeModel(GLenum mode);
+WINGDIAPI void APIENTRY glStencilFunc(GLenum func, GLint ref, GLuint mask);
+WINGDIAPI void APIENTRY glStencilMask(GLuint mask);
+WINGDIAPI void APIENTRY glStencilOp(GLenum fail, GLenum zfail, GLenum zpass);
+WINGDIAPI void APIENTRY glTexCoord1d(GLdouble s);
+WINGDIAPI void APIENTRY glTexCoord1dv(const GLdouble *v);
+WINGDIAPI void APIENTRY glTexCoord1f(GLfloat s);
+WINGDIAPI void APIENTRY glTexCoord1fv(const GLfloat *v);
+WINGDIAPI void APIENTRY glTexCoord1i(GLint s);
+WINGDIAPI void APIENTRY glTexCoord1iv(const GLint *v);
+WINGDIAPI void APIENTRY glTexCoord1s(GLshort s);
+WINGDIAPI void APIENTRY glTexCoord1sv(const GLshort *v);
+WINGDIAPI void APIENTRY glTexCoord2d(GLdouble s, GLdouble t);
+WINGDIAPI void APIENTRY glTexCoord2dv(const GLdouble *v);
+WINGDIAPI void APIENTRY glTexCoord2f(GLfloat s, GLfloat t);
+WINGDIAPI void APIENTRY glTexCoord2fv(const GLfloat *v);
+WINGDIAPI void APIENTRY glTexCoord2i(GLint s, GLint t);
+WINGDIAPI void APIENTRY glTexCoord2iv(const GLint *v);
+WINGDIAPI void APIENTRY glTexCoord2s(GLshort s, GLshort t);
+WINGDIAPI void APIENTRY glTexCoord2sv(const GLshort *v);
+WINGDIAPI void APIENTRY glTexCoord3d(GLdouble s, GLdouble t, GLdouble r);
+WINGDIAPI void APIENTRY glTexCoord3dv(const GLdouble *v);
+WINGDIAPI void APIENTRY glTexCoord3f(GLfloat s, GLfloat t, GLfloat r);
+WINGDIAPI void APIENTRY glTexCoord3fv(const GLfloat *v);
+WINGDIAPI void APIENTRY glTexCoord3i(GLint s, GLint t, GLint r);
+WINGDIAPI void APIENTRY glTexCoord3iv(const GLint *v);
+WINGDIAPI void APIENTRY glTexCoord3s(GLshort s, GLshort t, GLshort r);
+WINGDIAPI void APIENTRY glTexCoord3sv(const GLshort *v);
+WINGDIAPI void APIENTRY glTexCoord4d(GLdouble s, GLdouble t, GLdouble r, GLdouble q);
+WINGDIAPI void APIENTRY glTexCoord4dv(const GLdouble *v);
+WINGDIAPI void APIENTRY glTexCoord4f(GLfloat s, GLfloat t, GLfloat r, GLfloat q);
+WINGDIAPI void APIENTRY glTexCoord4fv(const GLfloat *v);
+WINGDIAPI void APIENTRY glTexCoord4i(GLint s, GLint t, GLint r, GLint q);
+WINGDIAPI void APIENTRY glTexCoord4iv(const GLint *v);
+WINGDIAPI void APIENTRY glTexCoord4s(GLshort s, GLshort t, GLshort r, GLshort q);
+WINGDIAPI void APIENTRY glTexCoord4sv(const GLshort *v);
+WINGDIAPI void APIENTRY glTexCoordPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+WINGDIAPI void APIENTRY glTexEnvf(GLenum target, GLenum pname, GLfloat param);
+WINGDIAPI void APIENTRY glTexEnvfv(GLenum target, GLenum pname, const GLfloat *params);
+WINGDIAPI void APIENTRY glTexEnvi(GLenum target, GLenum pname, GLint param);
+WINGDIAPI void APIENTRY glTexEnviv(GLenum target, GLenum pname, const GLint *params);
+WINGDIAPI void APIENTRY glTexGend(GLenum coord, GLenum pname, GLdouble param);
+WINGDIAPI void APIENTRY glTexGendv(GLenum coord, GLenum pname, const GLdouble *params);
+WINGDIAPI void APIENTRY glTexGenf(GLenum coord, GLenum pname, GLfloat param);
+WINGDIAPI void APIENTRY glTexGenfv(GLenum coord, GLenum pname, const GLfloat *params);
+WINGDIAPI void APIENTRY glTexGeni(GLenum coord, GLenum pname, GLint param);
+WINGDIAPI void APIENTRY glTexGeniv(GLenum coord, GLenum pname, const GLint *params);
+WINGDIAPI void APIENTRY glTexImage1D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+WINGDIAPI void APIENTRY glTexImage2D(GLenum target, GLint level, GLint internalformat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels);
+WINGDIAPI void APIENTRY glTexParameterf(GLenum target, GLenum pname, GLfloat param);
+WINGDIAPI void APIENTRY glTexParameterfv(GLenum target, GLenum pname, const GLfloat *params);
+WINGDIAPI void APIENTRY glTexParameteri(GLenum target, GLenum pname, GLint param);
+WINGDIAPI void APIENTRY glTexParameteriv(GLenum target, GLenum pname, const GLint *params);
+WINGDIAPI void APIENTRY glTexSubImage1D(GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels);
+WINGDIAPI void APIENTRY glTexSubImage2D(GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels);
+WINGDIAPI void APIENTRY glTranslated(GLdouble x, GLdouble y, GLdouble z);
+WINGDIAPI void APIENTRY glTranslatef(GLfloat x, GLfloat y, GLfloat z);
+WINGDIAPI void APIENTRY glVertex2d(GLdouble x, GLdouble y);
+WINGDIAPI void APIENTRY glVertex2dv(const GLdouble *v);
+WINGDIAPI void APIENTRY glVertex2f(GLfloat x, GLfloat y);
+WINGDIAPI void APIENTRY glVertex2fv(const GLfloat *v);
+WINGDIAPI void APIENTRY glVertex2i(GLint x, GLint y);
+WINGDIAPI void APIENTRY glVertex2iv(const GLint *v);
+WINGDIAPI void APIENTRY glVertex2s(GLshort x, GLshort y);
+WINGDIAPI void APIENTRY glVertex2sv(const GLshort *v);
+WINGDIAPI void APIENTRY glVertex3d(GLdouble x, GLdouble y, GLdouble z);
+WINGDIAPI void APIENTRY glVertex3dv(const GLdouble *v);
+WINGDIAPI void APIENTRY glVertex3f(GLfloat x, GLfloat y, GLfloat z);
+WINGDIAPI void APIENTRY glVertex3fv(const GLfloat *v);
+WINGDIAPI void APIENTRY glVertex3i(GLint x, GLint y, GLint z);
+WINGDIAPI void APIENTRY glVertex3iv(const GLint *v);
+WINGDIAPI void APIENTRY glVertex3s(GLshort x, GLshort y, GLshort z);
+WINGDIAPI void APIENTRY glVertex3sv(const GLshort *v);
+WINGDIAPI void APIENTRY glVertex4d(GLdouble x, GLdouble y, GLdouble z, GLdouble w);
+WINGDIAPI void APIENTRY glVertex4dv(const GLdouble *v);
+WINGDIAPI void APIENTRY glVertex4f(GLfloat x, GLfloat y, GLfloat z, GLfloat w);
+WINGDIAPI void APIENTRY glVertex4fv(const GLfloat *v);
+WINGDIAPI void APIENTRY glVertex4i(GLint x, GLint y, GLint z, GLint w);
+WINGDIAPI void APIENTRY glVertex4iv(const GLint *v);
+WINGDIAPI void APIENTRY glVertex4s(GLshort x, GLshort y, GLshort z, GLshort w);
+WINGDIAPI void APIENTRY glVertex4sv(const GLshort *v);
+WINGDIAPI void APIENTRY glVertexPointer(GLint size, GLenum type, GLsizei stride, const GLvoid *pointer);
+WINGDIAPI void APIENTRY glViewport(GLint x, GLint y, GLsizei width, GLsizei height);
+
+*/ \ No newline at end of file
diff --git a/libjin/Graphics/Shader.cpp b/libjin/Graphics/Shader.cpp
index 0f9dab6..252401f 100644
--- a/libjin/Graphics/Shader.cpp
+++ b/libjin/Graphics/Shader.cpp
@@ -17,7 +17,7 @@ namespace graphics
* SHADER_FORMAT_SIZE
* formatShader
*/
- #include "base.shader.h"
+ #include "Shaders/base.shader.h"
/**
* https://stackoverflow.com/questions/27941496/use-sampler-without-passing-through-value
@@ -157,11 +157,10 @@ namespace graphics
// TODO: 쳣󶨵
return;
}
+ gl.activeTexUnit(unit);
glUniform1i(location, unit);
- glActiveTexture(GL_TEXTURE0 + unit);
- glBindTexture(GL_TEXTURE_2D, tex->getTexture());
-
- glActiveTexture(GL_TEXTURE0);
+ gl.bindTexture(tex->getTexture());
+ gl.activeTexUnit(0);
}
void JSLProgram::sendCanvas(const char* variable, const Canvas* canvas)
diff --git a/libjin/Graphics/base.shader.h b/libjin/Graphics/Shaders/base.shader.h
index 080e27e..080e27e 100644
--- a/libjin/Graphics/base.shader.h
+++ b/libjin/Graphics/Shaders/base.shader.h
diff --git a/libjin/Graphics/Shaders/default.shader.h b/libjin/Graphics/Shaders/default.shader.h
new file mode 100644
index 0000000..1fd4542
--- /dev/null
+++ b/libjin/Graphics/Shaders/default.shader.h
@@ -0,0 +1,7 @@
+// Ĭshader
+static const char* default_shader = R"(
+Color effect(Color col, Texture tex, vec2 uv, vec2 xy)
+{
+ return Texel(tex, uv);
+}
+)"; \ No newline at end of file
diff --git a/libjin/Graphics/font.shader.h b/libjin/Graphics/Shaders/font.shader.h
index 27a9354..10284f0 100644
--- a/libjin/Graphics/font.shader.h
+++ b/libjin/Graphics/Shaders/font.shader.h
@@ -4,6 +4,6 @@ Color effect(Color col, Texture tex, vec2 uv, vec2 xy)
{
// r͸
Color c = Texel(tex, uv);
- return Vec4(col.rgb, c.r);
+ return Vec4(col.rgb, c.a);
}
)font_shader"; \ No newline at end of file
diff --git a/test/05Font/main.cpp b/test/05Font/main.cpp
index da65c2e..51dc628 100644
--- a/test/05Font/main.cpp
+++ b/test/05Font/main.cpp
@@ -25,7 +25,7 @@ Color effect(Color col, Texture tex, vec2 uv, vec2 screen)
Filesystem* fs = Filesystem::get();
fs->mount("../Debug");
Buffer buffer;
- fs->read("font.ttf", &buffer);
+ fs->read("font2.ttf", &buffer);
data = FontData::createFontData((const unsigned char*)buffer.data, buffer.size);
font = Font::createFont(data, 14);
//canvas = Canvas::createCanvas(100, 100);
@@ -75,7 +75,7 @@ abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
》开始在日本东京电视台播出。2004年,漫画进而改编成电影。2006年,漩涡鸣人入选
美国《新闻周刊》日文版于10月18日发行的特集中选出的“全世界最受尊敬的100位日本
人”。[2]
-)", 10, 10 + 15 * 2, 15, 0);
+)", 10, 10 + 15 * 2, 17, 0);
//font->print(u8"你好世界!", 10, 10 + 15*3);
//font->render(page);
glColor4f(1, 1, 1, 1);