aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorchai <chaifix@163.com>2018-10-04 21:19:51 +0800
committerchai <chaifix@163.com>2018-10-04 21:19:51 +0800
commitf64bde8fe125393fa8a2a5de869c44aaed47b621 (patch)
tree696756093d27692eaae8472d6d9f6f37f375c01b
parentc6f9d4182aaa868a72acac59cf8837f5924ed11e (diff)
*update
-rw-r--r--build/Debug/05Font.exebin0 -> 1197568 bytes
-rw-r--r--build/Debug/font.ttfbin0 -> 9753284 bytes
-rw-r--r--build/Debug/font2.ttfbin0 -> 6700204 bytes
-rw-r--r--build/Debug/img.pngbin0 -> 4674 bytes
-rw-r--r--build/libjin/libjin.vcxproj1
-rw-r--r--build/libjin/libjin.vcxproj.filters3
-rw-r--r--libjin/3rdparty/ogl/OpenGL.h349
-rw-r--r--libjin/Graphics/Bitmap.h1
-rw-r--r--libjin/Graphics/Canvas.cpp13
-rw-r--r--libjin/Graphics/Drawable.cpp9
-rw-r--r--libjin/Graphics/Font.cpp58
-rw-r--r--libjin/Graphics/Font.h6
-rw-r--r--libjin/Graphics/OpenGL.cpp3
-rw-r--r--libjin/Graphics/OpenGL.h358
-rw-r--r--libjin/Graphics/Shader.cpp23
-rw-r--r--libjin/Graphics/Shader.h3
-rw-r--r--libjin/Graphics/Shaders/base.shader.h37
-rw-r--r--libjin/Graphics/Shaders/default.shader.h6
-rw-r--r--libjin/Graphics/Shaders/font.shader.h6
-rw-r--r--libjin/Graphics/Shaders/texture.shader.h21
-rw-r--r--libjin/Graphics/Shapes.cpp41
-rw-r--r--libjin/Math/Matrix.cpp18
-rw-r--r--libjin/Math/Matrix.h2
-rw-r--r--test/05Font/main.cpp83
24 files changed, 544 insertions, 497 deletions
diff --git a/build/Debug/05Font.exe b/build/Debug/05Font.exe
new file mode 100644
index 0000000..2ec8e30
--- /dev/null
+++ b/build/Debug/05Font.exe
Binary files differ
diff --git a/build/Debug/font.ttf b/build/Debug/font.ttf
new file mode 100644
index 0000000..ac64abe
--- /dev/null
+++ b/build/Debug/font.ttf
Binary files differ
diff --git a/build/Debug/font2.ttf b/build/Debug/font2.ttf
new file mode 100644
index 0000000..933b9d3
--- /dev/null
+++ b/build/Debug/font2.ttf
Binary files differ
diff --git a/build/Debug/img.png b/build/Debug/img.png
new file mode 100644
index 0000000..a762388
--- /dev/null
+++ b/build/Debug/img.png
Binary files differ
diff --git a/build/libjin/libjin.vcxproj b/build/libjin/libjin.vcxproj
index b5026d1..ebd95dc 100644
--- a/build/libjin/libjin.vcxproj
+++ b/build/libjin/libjin.vcxproj
@@ -96,6 +96,7 @@
<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\Shaders\texture.shader.h" />
<ClInclude Include="..\..\libjin\Graphics\Shapes.h" />
<ClInclude Include="..\..\libjin\Graphics\Texture.h" />
<ClInclude Include="..\..\libjin\Graphics\Utf8.h" />
diff --git a/build/libjin/libjin.vcxproj.filters b/build/libjin/libjin.vcxproj.filters
index 1ef8c0e..f79e814 100644
--- a/build/libjin/libjin.vcxproj.filters
+++ b/build/libjin/libjin.vcxproj.filters
@@ -364,6 +364,9 @@
<ClInclude Include="..\..\libjin\Graphics\Utf8.h">
<Filter>Graphics</Filter>
</ClInclude>
+ <ClInclude Include="..\..\libjin\Graphics\Shaders\texture.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 7c1c599..33b14d2 100644
--- a/libjin/3rdparty/ogl/OpenGL.h
+++ b/libjin/3rdparty/ogl/OpenGL.h
@@ -103,14 +103,14 @@ namespace ogl2d
glOrtho(0, w, h, 0, -1, 1);
}
- private:
+ protected:
struct { GLubyte r, g, b, a; } _color; // current draw color
struct { GLubyte r, g, b, a; } _precolor; // previous draw color
GLuint _texture; // current binded texture
};
- /* OpenGL instance singleton */
+ ///* OpenGL instance singleton */
extern OpenGL gl;
#if defined(OGL2D_IMPLEMENT)
@@ -125,7 +125,6 @@ namespace ogl2d
OpenGL::~OpenGL()
{
-
}
void OpenGL::pushColor(GLubyte r, GLubyte g, GLubyte b, GLubyte a)
@@ -185,4 +184,346 @@ namespace ogl2d
#endif // OGL2D_IMPLEMENT
}
-#endif \ No newline at end of file
+#endif
+
+
+/* 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);
+
+*/
diff --git a/libjin/Graphics/Bitmap.h b/libjin/Graphics/Bitmap.h
index 5510569..af7f376 100644
--- a/libjin/Graphics/Bitmap.h
+++ b/libjin/Graphics/Bitmap.h
@@ -16,6 +16,7 @@ namespace graphics
public:
static Bitmap* createBitmap(const void* imgData, size_t size);
static Bitmap* createBitmap(int w, int h, Color color = Color::BLACK);
+ static void destroyBitmap(Bitmap* bitmap);
static Bitmap* clone(const Bitmap* bitmap);
~Bitmap();
diff --git a/libjin/Graphics/Canvas.cpp b/libjin/Graphics/Canvas.cpp
index 827a5d2..d34731a 100644
--- a/libjin/Graphics/Canvas.cpp
+++ b/libjin/Graphics/Canvas.cpp
@@ -65,14 +65,11 @@ namespace graphics
if (isBinded(canvas)) return;
current = canvas;
gl.bindFrameBuffer(canvas->fbo);
-
int w = canvas->size.w;
int h = canvas->size.h;
/* set view port to canvas */
glViewport(0, 0, w, h);
-
- projectionMatrix.setOrtho(0, w, 0, h, -1, 1);
-
+ gl.ProjectionMatrix.setOrtho(0, w, 0, h, -1, 1);
}
/**
@@ -87,15 +84,15 @@ namespace graphics
current = DEFAULT_CANVAS;
/* get window size as viewport */
Window* wnd = Window::get();
- int ww = wnd->getW();
- int wh = wnd->getH();
+ int w = wnd->getW();
+ int h = wnd->getH();
glBindFramebuffer(GL_FRAMEBUFFER, DEFAULT_CANVAS->fbo);
/* set viewport on screen */
- glViewport(0, 0, ww, wh);
+ glViewport(0, 0, w, h);
- projectionMatrix.setOrtho(0, ww, wh, 0, -1, 1);
+ gl.ProjectionMatrix.setOrtho(0, w, h, 0, -1, 1);
}
diff --git a/libjin/Graphics/Drawable.cpp b/libjin/Graphics/Drawable.cpp
index 22ca935..f8ff131 100644
--- a/libjin/Graphics/Drawable.cpp
+++ b/libjin/Graphics/Drawable.cpp
@@ -41,10 +41,11 @@ namespace graphics
void Drawable::draw(int x, int y, float sx, float sy, float r)
{
JSLProgram* jsl = JSLProgram::getCurrentJSL();
- modelMatrix.setTransformation(x, y, r, sx, sy, anchor.x, anchor.y);
- jsl->sendMatrix4("_modelMatrix_", &modelMatrix);
- jsl->bindVertexAttribPointer("_vert_coord_", 2, GL_FLOAT, GL_FALSE, 0, vertex_coords);
- jsl->bindVertexAttribPointer("_tex_coord_", 2, GL_FLOAT, GL_FALSE, 0, texture_coords);
+ gl.ModelMatrix.setTransformation(x, y, r, sx, sy, anchor.x, anchor.y);
+ jsl->sendMatrix4("_modelMatrix_", &gl.ModelMatrix);
+ jsl->sendMatrix4("_projectionMatrix_", &gl.ProjectionMatrix);
+ jsl->bindVertexPointer(2, GL_FLOAT, 0, vertex_coords);
+ jsl->bindUVPointer(2, GL_FLOAT, 0, texture_coords);
gl.bindTexture(texture);
gl.drawArrays(GL_QUADS, 0, 4);
gl.bindTexture(0);
diff --git a/libjin/Graphics/Font.cpp b/libjin/Graphics/Font.cpp
index d702dcf..9e65dcc 100644
--- a/libjin/Graphics/Font.cpp
+++ b/libjin/Graphics/Font.cpp
@@ -60,6 +60,12 @@ namespace graphics
return font;
}
+ void Font::destroyFont(Font* font)
+ {
+ if (font != nullptr)
+ delete font;
+ }
+
Font::Font(FontData* f, unsigned int fontSize)
: cursor(0, 0)
, font(f)
@@ -101,7 +107,7 @@ namespace graphics
GLuint t;
gl.flushError();
t = gl.genTexture();
- gl.bindTexture(t);
+ gl.bindTexture(t);
gl.setTexParameter(GL_TEXTURE_MAG_FILTER, GL_LINEAR);
gl.setTexParameter(GL_TEXTURE_MIN_FILTER, GL_LINEAR);
gl.setTexParameter(GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE);
@@ -120,18 +126,19 @@ namespace graphics
void Font::print(const char* t, int x, int y, int lineheight, int spacing)
{
- Page* page = typeset(t, x, y, lineheight, spacing);
- render(page);
+ Page* page = typeset(t, lineheight, spacing);
+ print(page, x, y);
delete page;
}
- Page* Font::typeset(const char* t, int x, int y, int lineheight, int spacing)
+ Page* Font::typeset(const char* text, int lineheight, int spacing)
{
// typesetting, for reducing draw call
+ const char* t = text;
Page* page = new Page();
vector<GlyphArrayDrawInfo>& glyphinfolist = page->glyphinfolist;
vector<GlyphVertex>& glyphvertices = page->glyphvertices;
- Vector2<int> p(x, y);
+ Vector2<int> p(0, 0);
Codepoint c;
int texture = -1;
Glyph* glyph = nullptr;
@@ -148,7 +155,7 @@ namespace graphics
if (c == 0x0A)
{
p.y += lineheight;
- p.x = x;
+ p.x = 0;
i -= 4;
continue;
}
@@ -183,50 +190,27 @@ namespace graphics
p.x += glyph->width + spacing;
}
+ //getTextBox(text, &page->width, &page->height, lineheight, spacing);
return page;
}
- void Font::render(const Page* page)
+ void Font::print(const Page* page, int x, int y)
{
JSLProgram* jsl = JSLProgram::getCurrentJSL();
-
const vector<GlyphArrayDrawInfo>& glyphinfolist = page->glyphinfolist;
const vector<GlyphVertex>& glyphvertices = page->glyphvertices;
- gl.enableClientState(GL_VERTEX_ARRAY);
- gl.enableClientState(GL_TEXTURE_COORD_ARRAY);
+ gl.ModelMatrix.setTransformation(x, y, 0, 1, 1, 0, 0);
+ jsl->sendMatrix4("_modelMatrix_", &gl.ModelMatrix);
+ jsl->sendMatrix4("_projectionMatrix_", &gl.ProjectionMatrix);
for (int i = 0; i < glyphinfolist.size(); ++i)
{
const GlyphArrayDrawInfo& info = glyphinfolist[i];
- 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)
+ jsl->bindVertexPointer(2, GL_INT, sizeof(GlyphVertex), &glyphvertices[info.start].x);
+ jsl->bindUVPointer(2, GL_FLOAT, sizeof(GlyphVertex), &glyphvertices[info.start].u);
+ gl.bindTexture(info.texture);
gl.drawArrays(GL_QUADS, 0, info.count);
-#endif
gl.bindTexture(0);
}
-#if defined(font_debug)
- gl.bindTexture(1);
- float xy[] = {
- 0,0,
- 0,textureHeight,
- textureWidth, textureHeight,
- textureWidth, 0
- };
- float uv[] = {
- 0, 0,
- 0, 1,
- 1, 1,
- 1, 0
- };
- gl.vertexPointer(2, GL_FLOAT, 0, xy);
- gl.texCoordPointer(2, GL_FLOAT, 0, uv);
- gl.drawArrays(GL_QUADS, 0, 4);
- gl.bindTexture(0);
-#endif
- gl.disableClientState(GL_VERTEX_ARRAY);
- gl.disableClientState(GL_TEXTURE_COORD_ARRAY);
}
int Font::getCharWidth(int c)
diff --git a/libjin/Graphics/Font.h b/libjin/Graphics/Font.h
index 2a1032c..4525e8f 100644
--- a/libjin/Graphics/Font.h
+++ b/libjin/Graphics/Font.h
@@ -44,6 +44,7 @@ namespace graphics
{
std::vector<GlyphArrayDrawInfo> glyphinfolist;
std::vector<GlyphVertex> glyphvertices;
+ int width, height;
};
class Font
@@ -52,10 +53,11 @@ namespace graphics
typedef unsigned int Codepoint;
static Font* createFont(FontData* fontData, unsigned int fontSzie);
+ static void destroyFont(Font* font);
- Page* typeset(const char* text, int x, int y, int lineheight, int spacing);
- void render(const Page* page);
+ Page* typeset(const char* text, int lineheight, int spacing);
void print(const char* text, int x, int y, int lineheight, int spacing = 0);
+ void print(const Page* page, int x, int y);
//Bitmap* bake(const char* text);
#if defined(font_debug)
void drawAtlas();
diff --git a/libjin/Graphics/OpenGL.cpp b/libjin/Graphics/OpenGL.cpp
index 30a8a1f..f7bed9f 100644
--- a/libjin/Graphics/OpenGL.cpp
+++ b/libjin/Graphics/OpenGL.cpp
@@ -6,8 +6,7 @@ namespace jin
namespace graphics
{
- math::Matrix projectionMatrix;
- math::Matrix modelMatrix;
+ OpenGL gl;
}
}
diff --git a/libjin/Graphics/OpenGL.h b/libjin/Graphics/OpenGL.h
index 45e7499..51395ba 100644
--- a/libjin/Graphics/OpenGL.h
+++ b/libjin/Graphics/OpenGL.h
@@ -1,357 +1,29 @@
+#ifndef __LIBJIN_OPENGL_H
+#define __LIBJIN_OPENGL_H
#include "../3rdparty/GLee/GLee.h"
#include "../3rdparty/ogl/OpenGL.h"
#include "../Math/Matrix.h"
-using namespace ogl2d;
namespace jin
{
namespace graphics
{
- extern math::Matrix projectionMatrix;
- extern math::Matrix modelMatrix;
+ class OpenGL : public ogl2d::OpenGL
+ {
+ public:
+ math::Matrix ProjectionMatrix;
+ math::Matrix ModelMatrix;
-}
-}
+ OpenGL() : ogl2d::OpenGL()
+ {
+ }
+ };
-/* GL.h
+ extern OpenGL gl;
-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
+#endif \ No newline at end of file
diff --git a/libjin/Graphics/Shader.cpp b/libjin/Graphics/Shader.cpp
index 13207b6..e2aaf63 100644
--- a/libjin/Graphics/Shader.cpp
+++ b/libjin/Graphics/Shader.cpp
@@ -140,7 +140,7 @@ namespace graphics
glUseProgram(pid);
currentJSLProgram = this;
sendInt("_tex0_", DEFAULT_TEXTURE_UNIT);
- sendMatrix4("_projectionMatrix_", &projectionMatrix);
+ //sendMatrix4("_projectionMatrix_", &projectionMatrix);
}
/*static*/ void JSLProgram::unuse()
@@ -269,13 +269,20 @@ namespace graphics
glUniformMatrix4fv(loc, 1, GL_FALSE, mat4->getElements());
}
- void JSLProgram::bindVertexAttribPointer(const char* name, int n, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer)
- {
- GLint loc = glGetAttribLocation(pid, name);
- glEnableVertexAttribArray(1);
- glVertexAttribPointer(loc, n, type, normalized, stride, pointer);
- }
-
+ void JSLProgram::bindVertexPointer(int n, GLenum type, GLsizei stride, const GLvoid * pointers)
+ {
+ GLint loc = glGetAttribLocation(pid, "_vert_coord_");
+ glEnableVertexAttribArray(0);
+ glVertexAttribPointer(loc, n, type, GL_FALSE, stride, pointers);
+ }
+
+ void JSLProgram::bindUVPointer(int n, GLenum type, GLsizei stride, const GLvoid * pointers)
+ {
+ GLint loc = glGetAttribLocation(pid, "_tex_coord_");
+ glEnableVertexAttribArray(1);
+ glVertexAttribPointer(loc, n, type, GL_FALSE, stride, pointers);
+ }
+
} // graphics
} // jin
diff --git a/libjin/Graphics/Shader.h b/libjin/Graphics/Shader.h
index 963607d..6a92b88 100644
--- a/libjin/Graphics/Shader.h
+++ b/libjin/Graphics/Shader.h
@@ -36,7 +36,8 @@ namespace graphics
void sendColor(const char* name, const Color* col);
void sendMatrix4(const char* name, const math::Matrix* mat4);
- void bindVertexAttribPointer(const char* name, int n, GLenum type, GLboolean normalized, GLsizei stride, const GLvoid * pointer);
+ void bindVertexPointer(int n, GLenum type, GLsizei stride, const GLvoid * pointers);
+ void bindUVPointer(int n, GLenum type, GLsizei stride, const GLvoid * pointers);
protected:
static JSLProgram* currentJSLProgram;
diff --git a/libjin/Graphics/Shaders/base.shader.h b/libjin/Graphics/Shaders/base.shader.h
index 0fc7dd6..477d1b1 100644
--- a/libjin/Graphics/Shaders/base.shader.h
+++ b/libjin/Graphics/Shaders/base.shader.h
@@ -26,13 +26,17 @@ vec4 frag(vec4 color, Texture tex, vertex v)
*/
static const char* base_shared = R"(
-#define number float
+#define Number float
#define Texture sampler2D
#define Canvas sampler2D
#define Color vec4
-#define Texel texture2D
+#define Vec2 vec2
+#define Vec3 vec3
+#define Vec4 vec4
-struct vertex
+#define texel texture2D
+
+struct Vertex
{
vec2 xy;
vec2 uv;
@@ -40,7 +44,7 @@ struct vertex
)";
-static const int BASE_MACRO_SIZE = strlen(base_shared);
+static const int BASE_SHARED_SIZE = strlen(base_shared);
static const char* base_vertex = R"(
#version 130 core
@@ -53,6 +57,7 @@ uniform mat4 _modelMatrix_;
in vec2 _vert_coord_;
in vec2 _tex_coord_;
+out vec4 _color;
out vec2 _xy;
out vec2 _uv;
@@ -60,19 +65,16 @@ out vec2 _uv;
void main()
{
- _xy = (_projectionMatrix_ * _modelMatrix_ * vec4(_vert_coord_, 0, 0)).xy;
- _uv = _tex_coord_;
- vertex _v;
- _v.xy = _xy;
- _v.uv = _uv;
- _v = vert(_v);
+ vec4 v = _modelMatrix_ * vec4(_vert_coord_, 0, 1.0);
+ Vertex _v = vert(Vertex(v.xy, _tex_coord_));
+ gl_Position = _projectionMatrix_ * v;
+ _color = gl_Color;
_xy = _v.xy;
- _uv = _v.uv;
- gl_Position = vec4(_xy, 0, 0);
+ _uv = _v.uv;
}
)";
-static const int BASE_VERTEX_SHADER_SIZE = strlen(base_vertex) + BASE_MACRO_SIZE;
+static const int BASE_VERTEX_SHADER_SIZE = strlen(base_vertex) + BASE_SHARED_SIZE;
#define formatVertexShader(buf, program) sprintf(buf,base_vertex, base_shared, program)
@@ -83,6 +85,7 @@ static const char* base_fragment = R"(
uniform Texture _tex0_;
+in vec4 _color;
in vec2 _xy;
in vec2 _uv;
@@ -92,14 +95,10 @@ out vec4 _outColor_;
void main()
{
- vertex v;
- v.xy = _xy;
- v.uv = _uv;
- _outColor_ = frag(gl_Color, _tex0_, v);
- _outColor_ = vec4( 1, 1, 1, 1);
+ _outColor_ = frag(_color, _tex0_, Vertex(_xy, _uv));
}
)";
-static const int BASE_FRAGMENT_SHADER_SIZE = strlen(base_fragment) + BASE_MACRO_SIZE;
+static const int BASE_FRAGMENT_SHADER_SIZE = strlen(base_fragment) + BASE_SHARED_SIZE;
#define formatFragmentShader(buf, program) sprintf(buf, base_fragment, base_shared, program)
diff --git a/libjin/Graphics/Shaders/default.shader.h b/libjin/Graphics/Shaders/default.shader.h
index 40c72e0..f0175d7 100644
--- a/libjin/Graphics/Shaders/default.shader.h
+++ b/libjin/Graphics/Shaders/default.shader.h
@@ -3,7 +3,7 @@ static const char* default_shader = R"(
#VERTEX_SHADER
-vertex vert(vertex v)
+Vertex vert(Vertex v)
{
return v;
}
@@ -12,9 +12,9 @@ vertex vert(vertex v)
#FRAGMENT_SHADER
-Color frag(Color col, Texture tex, vertex v)
+Color frag(Color col, Texture tex, Vertex v)
{
- return Texel(tex, v.uv);
+ return col;
}
#END_FRAGMENT_SHADER
diff --git a/libjin/Graphics/Shaders/font.shader.h b/libjin/Graphics/Shaders/font.shader.h
index 7904077..e04c225 100644
--- a/libjin/Graphics/Shaders/font.shader.h
+++ b/libjin/Graphics/Shaders/font.shader.h
@@ -3,7 +3,7 @@ static const char* font_shader = R"(
#VERTEX_SHADER
-vertex vert(vertex v)
+Vertex vert(Vertex v)
{
return v;
}
@@ -12,9 +12,9 @@ vertex vert(vertex v)
#FRAGMENT_SHADER
-Color frag(Color col, Texture tex, vertex v)
+Color frag(Color col, Texture tex, Vertex v)
{
- return Texel(tex, v.uv);
+ return Color(col.rgb, texel(tex, v.uv).a);
}
#END_FRAGMENT_SHADER
diff --git a/libjin/Graphics/Shaders/texture.shader.h b/libjin/Graphics/Shaders/texture.shader.h
new file mode 100644
index 0000000..d1fc86f
--- /dev/null
+++ b/libjin/Graphics/Shaders/texture.shader.h
@@ -0,0 +1,21 @@
+// ͼshader
+static const char* texture_shader = R"(
+
+#VERTEX_SHADER
+
+Vertex vert(Vertex v)
+{
+ return v;
+}
+
+#END_VERTEX_SHADER
+
+#FRAGMENT_SHADER
+
+Color frag(Color col, Texture tex, Vertex v)
+{
+ return col * texel(tex, v.uv);
+}
+
+#END_FRAGMENT_SHADER
+)"; \ No newline at end of file
diff --git a/libjin/Graphics/Shapes.cpp b/libjin/Graphics/Shapes.cpp
index f80aa18..e054c96 100644
--- a/libjin/Graphics/Shapes.cpp
+++ b/libjin/Graphics/Shapes.cpp
@@ -1,6 +1,7 @@
#include "../jin_configuration.h"
#if LIBJIN_MODULES_RENDER
+#include "Shader.h"
#include "Shapes.h"
#include "../math/matrix.h"
#include "../math/constant.h"
@@ -11,34 +12,38 @@ namespace jin
namespace graphics
{
+ using namespace math;
+
void point(int x, int y)
{
- float vers[] = { x + 0.5f , y + 0.5f };
- glEnableClientState(GL_VERTEX_ARRAY);
- glVertexPointer(2, GL_FLOAT, 0, (GLvoid*)vers);
+ JSLProgram* jsl = JSLProgram::getCurrentJSL();
+ float verts[] = { x + 0.5f , y + 0.5f };
+ jsl->bindVertexPointer(2, GL_FLOAT, 0, verts);
+ jsl->sendMatrix4("_modelMatrix_", &Matrix::Identity);
+ jsl->sendMatrix4("_projectionMatrix_", &gl.ProjectionMatrix);
glDrawArrays(GL_POINTS, 0, 1);
- glDisableClientState(GL_VERTEX_ARRAY);
}
void points(int n, GLshort* p)
{
- glEnableClientState(GL_VERTEX_ARRAY);
- glVertexPointer(2, GL_SHORT, 0, (GLvoid*)p);
+ JSLProgram* jsl = JSLProgram::getCurrentJSL();
+ jsl->bindVertexPointer(2, GL_SHORT, 0, p);
+ jsl->sendMatrix4("_modelMatrix_", &Matrix::Identity);
+ jsl->sendMatrix4("_projectionMatrix_", &gl.ProjectionMatrix);
glDrawArrays(GL_POINTS, 0, n);
- glDisableClientState(GL_VERTEX_ARRAY);
}
void line(int x1, int y1, int x2, int y2)
{
+ JSLProgram* jsl = JSLProgram::getCurrentJSL();
float verts[] = {
x1, y1,
x2, y2
};
-
- glEnableClientState(GL_VERTEX_ARRAY);
- glVertexPointer(2, GL_FLOAT, 0, (const GLvoid*)verts);
+ jsl->bindVertexPointer(2, GL_FLOAT, 0, verts);
+ jsl->sendMatrix4("_modelMatrix_", &Matrix::Identity);
+ jsl->sendMatrix4("_projectionMatrix_", &gl.ProjectionMatrix);
glDrawArrays(GL_LINES, 0, 2);
- glDisableClientState(GL_VERTEX_ARRAY);
}
void circle(RenderMode mode, int x, int y, int r)
@@ -80,10 +85,11 @@ namespace graphics
void polygon_line(float* p, int count)
{
- glEnableClientState(GL_VERTEX_ARRAY);
- glVertexPointer(2, GL_FLOAT, 0, (const GLvoid*)p);
+ JSLProgram* jsl = JSLProgram::getCurrentJSL();
+ jsl->sendMatrix4("_modelMatrix_", &Matrix::Identity);
+ jsl->sendMatrix4("_projectionMatrix_", &gl.ProjectionMatrix);
+ jsl->bindVertexPointer(2, GL_FLOAT, 0, p);
glDrawArrays(GL_LINE_LOOP, 0, count);
- glDisableClientState(GL_VERTEX_ARRAY);
}
void polygon(RenderMode mode, float* p, int count)
@@ -94,10 +100,11 @@ namespace graphics
}
else if (mode == FILL)
{
- glEnableClientState(GL_VERTEX_ARRAY);
- glVertexPointer(2, GL_FLOAT, 0, (const GLvoid*)p);
+ JSLProgram* jsl = JSLProgram::getCurrentJSL();
+ jsl->sendMatrix4("_modelMatrix_", &Matrix::Identity);
+ jsl->sendMatrix4("_projectionMatrix_", &gl.ProjectionMatrix);
+ jsl->bindVertexPointer(2, GL_FLOAT, 0, p);
glDrawArrays(GL_POLYGON, 0, count);
- glDisableClientState(GL_VERTEX_ARRAY);
}
}
diff --git a/libjin/Math/Matrix.cpp b/libjin/Math/Matrix.cpp
index beed1c8..a80f37a 100644
--- a/libjin/Math/Matrix.cpp
+++ b/libjin/Math/Matrix.cpp
@@ -8,6 +8,8 @@ namespace jin
namespace math
{
+ const Matrix Matrix::Identity;
+
// | e0 e4 e8 e12 |
// | e1 e5 e9 e13 |
// | e2 e6 e10 e14 |
@@ -24,13 +26,17 @@ namespace math
void Matrix::setOrtho(float l, float r, float b, float t, float n, float f)
{
+ float w = r - l;
+ float h = t - b;
+ float z = f - n;
setIdentity();
- e[0] = 2 / (r - l);
- e[5] = 2 / (t - b);
- e[10] = -2 / (f - n);
- e[3] = -(r + l) / (r - l);
- e[7] = -(t + b) / (t - b);
- e[11] = -(f + n) / (f - n);
+ e[0] = 2 / w;
+ e[5] = 2 / h;
+ e[10] = -2 / z;
+ e[12] = -(r + l) / w;
+ e[13] = -(t + b) / h;
+ e[14] = -(f + n) / z;
+ e[15] = 1;
}
// | e0 e4 e8 e12 |
diff --git a/libjin/Math/Matrix.h b/libjin/Math/Matrix.h
index f02e317..52fc9c8 100644
--- a/libjin/Math/Matrix.h
+++ b/libjin/Math/Matrix.h
@@ -33,6 +33,8 @@ namespace math
public:
+ static const Matrix Identity;
+
/**
* Creates a new identity matrix.
**/
diff --git a/test/05Font/main.cpp b/test/05Font/main.cpp
index cdda3f0..f6d9bce 100644
--- a/test/05Font/main.cpp
+++ b/test/05Font/main.cpp
@@ -19,7 +19,7 @@ void onLoad()
const char* program = R"(
#VERTEX_SHADER
-vertex vert(vertex v)
+Vertex vert(Vertex v)
{
return v;
}
@@ -28,10 +28,11 @@ vertex vert(vertex v)
#FRAGMENT_SHADER
-Color frag(Color col, Texture tex, vertex v)
+vec2 stepSize = vec2(0.02f, 0.02f);
+
+Color frag(Color col, Texture tex, Vertex v)
{
- //return Texel(tex, v.uv);
- return vec4(1, 1, 1, 1);
+ return vec4(col.rgb, texel(tex, v.uv).a);
}
#END_FRAGMENT_SHADER
@@ -42,13 +43,33 @@ Color frag(Color col, Texture tex, vertex v)
Buffer buffer;
fs->read("font.ttf", &buffer);
data = FontData::createFontData((const unsigned char*)buffer.data, buffer.size);
- font = Font::createFont(data, 15);
+ font = Font::createFont(data, 18);
+ page = font->typeset(u8R"(
+平安時代中期の物語。紫式部著。ただし,そのすべてが紫式部の筆に成るのでは
+ないとする説もある。 54帖。寛弘 (1004~12) 頃成立か。物語は3部に分けてみ
+ることができる。第1部は,容貌,才能などすべてにすぐれた主人公光源氏が,多
+啊哈噶科膜卡して広く迎えられている。貴族社会の苦悩を摘出したところに磁瓷得
+ることができる。第1部は,容貌,才能などすべてにすぐれた主人公光源氏が,多
+くの女性と関係をもちながら,運命に導かれて栄華をきわめる姿を描く。これに対
+して第2部は苦悩の世界であって,光源氏は最愛の紫の上を失い,栄華は内側から崩
+壊する。第3部 (宇治十帖) は光源氏没後の物語で,不義によって生れた薫大将を主
+人公として,不安に満ちた暗い世界が展開される。さまざまな恋愛と運命的な人生の
+うちに,貴族社会の苦悩を摘出したところに価値があり,現代では,世界的な文学と
+して広く迎えられている。abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
+漫画自1999年开始在日本集英社旗下的少年漫画杂志《周刊少年Jump》上连载。2002年
+,由日本动画工作室Studio Pierrot根据漫画原作所改编制作的电视动画版《火影忍者
+》开始在日本东京电视台播出。2004年,漫画进而改编成电影。2006年,漩涡鸣人入选
+美国《新闻周刊》日文版于10月18日发行的特集中选出的“全世界最受尊敬的100位日本
+人”。[2]
+)", 20, 0);
+ delete data;
//canvas = Canvas::createCanvas(100, 100);
//page = font->typeset("こんにちは世界!", 120, 20);
buffer.clear();
fs->read("img.png", &buffer);
Bitmap* bitmap = Bitmap::createBitmap(buffer.data, buffer.size);
tex = Texture::createTexture(bitmap);
+ canvas = Canvas::createCanvas(100, 100);
}
void onEvent(jin::input::Event* e)
@@ -65,45 +86,27 @@ void onUpdate(int ms)
void onDraw()
{
+ glClear(GL_COLOR_BUFFER_BIT);
+ glColor4f(1, 1, 1, 1);
//gl.pushColor(32, 32, 32, 255);
//rect(FILL, 0, 0, 500, 500);
- gl.pushColor(255, 255, 255, 255);
shader->use();
- tex->draw(0, 0, 1, 1, 0);
+ //circle(RenderMode::LINE, 50, 50, 30);
+ //tex->draw(0, 0, 1, 1, 0);
+ //tex->draw(20, 50, 1, 1, 0);
//shader->sendFloat("dt", dt);
- //Canvas::bind(canvas);
-// if (font != nullptr)
-// {
-// glColor4f(1, 1, 1, 1);
-// //font->print(u8"Hello,你好\n啊 world!", 10, 10);
-// //font->print(u8"Привет мир!", 10, 10 + 15 * 1);
-// font->print(u8R"(
-//One of the most enjoyable arcade game.
-//abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
-//平安時代中期の物語。紫式部著。ただし,そのすべてが紫式部の筆に成るのでは
-//ないとする説もある。 54帖。寛弘 (1004~12) 頃成立か。物語は3部に分けてみ
-//ることができる。第1部は,容貌,才能などすべてにすぐれた主人公光源氏が,多
-//啊哈噶科膜卡して広く迎えられている。貴族社会の苦悩を摘出したところに磁瓷得
-//ることができる。第1部は,容貌,才能などすべてにすぐれた主人公光源氏が,多
-//くの女性と関係をもちながら,運命に導かれて栄華をきわめる姿を描く。これに対
-//して第2部は苦悩の世界であって,光源氏は最愛の紫の上を失い,栄華は内側から崩
-//壊する。第3部 (宇治十帖) は光源氏没後の物語で,不義によって生れた薫大将を主
-//人公として,不安に満ちた暗い世界が展開される。さまざまな恋愛と運命的な人生の
-//うちに,貴族社会の苦悩を摘出したところに価値があり,現代では,世界的な文学と
-//して広く迎えられている。abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
-//漫画自1999年开始在日本集英社旗下的少年漫画杂志《周刊少年Jump》上连载。2002年
-//,由日本动画工作室Studio Pierrot根据漫画原作所改编制作的电视动画版《火影忍者
-//》开始在日本东京电视台播出。2004年,漫画进而改编成电影。2006年,漩涡鸣人入选
-//美国《新闻周刊》日文版于10月18日发行的特集中选出的“全世界最受尊敬的100位日本
-//人”。[2]
-//)", 12, 10 + 15 * 2, 18);
-// //font->print(u8"你好世界!", 10, 10 + 15*3);
-// //font->render(page);
-// glColor4f(1, 1, 1, 1);
-// }
- shader->unuse();
- //Canvas::unbind();
- //canvas->draw(0, 0, 2, 2, 0);
+ Canvas::bind(canvas);
+ if (font != nullptr)
+ {
+ //font->print(u8"Hello,你好\n啊 world!", 10, 10);
+ //font->print(u8"Привет мир!", 10, 10 + 15 * 1);
+ font->print(page, 12, 10 + 15 * 2);
+ //font->print(u8"你好世界!", 10, 10 + 15*3);
+ //font->render(page);
+ }
+ Canvas::unbind();
+ canvas->draw(0, 0, 1, 1, 0);
+ shader->unuse();
}
int main(int argc, char* argv[])