shithub: tinygl

Download patch

ref: e24909b3f3c7830bb88a0867d96055cc310ff893
parent: 3aaf17bc54e0ab5bc103036d016a76283c371517
author: David <gek@katherine>
date: Tue Feb 16 16:09:08 EST 2021

Benchmarks

--- a/README.md
+++ b/README.md
@@ -39,6 +39,8 @@
 
 ![model loading demo](model_hole.gif)
 
+
+
 TinyGL 0.8 (c) 1997-2021 Fabrice Bellard, C-Chads, Gek (see License, it's free software)
 
 This is a maintained fork of TinyGL, by the C-Chads.
@@ -276,7 +278,94 @@
 
 ## ALSO COMPATIBLE WITH 16 BIT 
 
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+## BENCHMARK RESULTS
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+### CPU: i7-6700 (Gek)
+### OS: Linux Mint Debian Edition
 
+at the default settings, 32 bit,
+```c
+#define TGL_FEATURE_ARRAYS         1
+#define TGL_FEATURE_DISPLAYLISTS   1
+#define TGL_FEATURE_LIT_TEXTURES   1
+//NOTE: Polygon Offset does nothing at the moment.
+#define TGL_FEATURE_POLYGON_OFFSET 0
+#define TGL_FEATURE_POLYGON_STIPPLE 0
+//A stipple pattern is 128 bytes in size.
+#define TGL_POLYGON_STIPPLE_BYTES 128
+//A stipple pattern is 2^5 (32) bits wide.
+#define TGL_POLYGON_STIPPLE_POW2_WIDTH 5
+//The stipple pattern mask (the last bits of the screen coordinates used for indexing)
+//The default pattern is 32 bits wide and 32 bits tall, or 4 bytes per row and 32 tall, 4 * 32 = 128 bytes.
+#define TGL_POLYGON_STIPPLE_MASK_X 31
+#define TGL_POLYGON_STIPPLE_MASK_Y 31
+
+//These are features useful for integrating TinyGL with other renderers.
+#define TGL_FEATURE_NO_COPY_COLOR 0
+#define TGL_FEATURE_NO_DRAW_COLOR 0
+#define TGL_FEATURE_FORCE_CLEAR_NO_COPY_COLOR 0
+#define TGL_NO_COPY_COLOR 0xff00ff
+#define TGL_NO_DRAW_COLOR 0xff00ff
+//^ solid debug pink.
+#define TGL_COLOR_MASK 0x00ffffff
+
+//..
+
+#define TGL_FEATURE_16_BITS        0
+#define TGL_FEATURE_32_BITS        1
+```
+
+```
+./model -m monkey3.obj -count 27
+```
+
+Hovers around 55-62 fps at count 27. 
+(I get the exact same performance figures with textures enabled)
+
+```
+./gears
+Low: 731 FPS
+High: 885 FPS
+Average: around 835
+```
+
+```
+./helloworld
+Low: 1178 FPS
+High: 1530 FPS
+Average: around 1380 FPS
+```
+
+```
+./texture
+Low: 476 FPS
+High: 547 FPS
+Average: around 510 FPS
+```
+#### With NO_DRAW_COLOR enabled, otherwise the same
+
+```
+./model -m monkey3.obj -count 24
+```
+
+Raising the count above 25 causes the count to unreliably stay above 50 FPS and never reach 60.
+
+```
+./texture
+Low: 467 FPS
+High: 592 FPS
+Average: around 570 FPS
+```
+Surprising that it actually runs faster
+
+```
+./gears
+Low: 804 FPS
+High: 917 FPS
+Average: around 842 FPS
+```
+~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 # Here is the old description of TinyGL, saved for historical/attribution purposes:
 
 ### General Description:
--- a/SDL_Examples/model.c
+++ b/SDL_Examples/model.c
@@ -326,6 +326,7 @@
 	glHint(GL_PERSPECTIVE_CORRECTION_HINT, GL_NICEST);
 	glEnable(GL_DEPTH_TEST);
 	glEnable(GL_LIGHTING);
+	glSetEnableSpecular(0);
 static GLfloat white[4] = {1.0, 1.0, 1.0, 0.0};static GLfloat pos[4] = {5, 5, 10, 0.0}; // Light at infinity.
 	
 	glLightfv(GL_LIGHT0, GL_POSITION, pos);
--- a/include/GL/glx_unused.h
+++ /dev/null
@@ -1,144 +1,0 @@
-#ifndef GLX_H
-#define GLX_H
-
-#include <X11/Xlib.h>
-#include <X11/Xutil.h>
-#include "GL/gl.h"
-
-
-/* the following comes from Mesa */
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-
-#define GLX_VERSION_1_1		1
-
-
-/*
- * Tokens for glXChooseVisual and glXGetConfig:
- */
-enum _GLX_CONFIGS {
-	GLX_USE_GL		= 1,
-	GLX_BUFFER_SIZE		= 2,
-	GLX_LEVEL		= 3,
-	GLX_RGBA		= 4,
-	GLX_DOUBLEBUFFER	= 5, 
-	GLX_STEREO		= 6,
-	GLX_AUX_BUFFERS		= 7,
-	GLX_RED_SIZE		= 8,
-	GLX_GREEN_SIZE		= 9,
-	GLX_BLUE_SIZE		= 10,
-	GLX_ALPHA_SIZE		= 11,
-	GLX_DEPTH_SIZE		= 12,
-	GLX_STENCIL_SIZE	= 13,
-	GLX_ACCUM_RED_SIZE	= 14,
-	GLX_ACCUM_GREEN_SIZE	= 15,
-	GLX_ACCUM_BLUE_SIZE	= 16,
-	GLX_ACCUM_ALPHA_SIZE	= 17,
-
-	/* GLX_EXT_visual_info extension */
-	GLX_X_VISUAL_TYPE_EXT		= 0x22,
-	GLX_TRANSPARENT_TYPE_EXT	= 0x23,
-	GLX_TRANSPARENT_INDEX_VALUE_EXT	= 0x24,
-	GLX_TRANSPARENT_RED_VALUE_EXT	= 0x25,
-	GLX_TRANSPARENT_GREEN_VALUE_EXT	= 0x26,
-	GLX_TRANSPARENT_BLUE_VALUE_EXT	= 0x27,
-	GLX_TRANSPARENT_ALPHA_VALUE_EXT	= 0x28
-};
-
-
-/*
- * Error codes returned by glXGetConfig:
- */
-#define GLX_BAD_SCREEN		1
-#define GLX_BAD_ATTRIBUTE	2
-#define GLX_NO_EXTENSION	3
-#define GLX_BAD_VISUAL		4
-#define GLX_BAD_CONTEXT		5
-#define GLX_BAD_VALUE       	6
-#define GLX_BAD_ENUM		7
-
-
-/*
- * GLX 1.1 and later:
- */
-#define GLX_VENDOR		1
-#define GLX_VERSION		2
-#define GLX_EXTENSIONS 		3
-
-
-/*
- * GLX_visual_info extension
- */
-#define GLX_TRUE_COLOR_EXT		0x8002
-#define GLX_DIRECT_COLOR_EXT		0x8003
-#define GLX_PSEUDO_COLOR_EXT		0x8004
-#define GLX_STATIC_COLOR_EXT		0x8005
-#define GLX_GRAY_SCALE_EXT		0x8006
-#define GLX_STATIC_GRAY_EXT		0x8007
-#define GLX_NONE_EXT			0x8000
-#define GLX_TRANSPARENT_RGB_EXT		0x8008
-#define GLX_TRANSPARENT_INDEX_EXT	0x8009
-
-
-typedef void *GLXContext;
-typedef Pixmap GLXPixmap;
-typedef Drawable GLXDrawable;
-typedef XID GLXContextID;
-
-
-extern XVisualInfo* glXChooseVisual( Display *dpy, int screen,
-				     int *attribList );
-
-extern GLXContext glXCreateContext( Display *dpy, XVisualInfo *vis,
-				    GLXContext shareList, Bool direct );
-
-extern void glXDestroyContext( Display *dpy, GLXContext ctx );
-
-extern Bool glXMakeCurrent( Display *dpy, GLXDrawable drawable,
-			    GLXContext ctx);
-
-extern void glXCopyContext( Display *dpy, GLXContext src, GLXContext dst,
-			    GLuint mask );
-
-extern void glXSwapBuffers( Display *dpy, GLXDrawable drawable );
-
-extern GLXPixmap glXCreateGLXPixmap( Display *dpy, XVisualInfo *visual,
-				     Pixmap pixmap );
-
-extern void glXDestroyGLXPixmap( Display *dpy, GLXPixmap pixmap );
-
-extern Bool glXQueryExtension( Display *dpy, int *errorb, int *event );
-
-extern Bool glXQueryVersion( Display *dpy, int *maj, int *min );
-
-extern Bool glXIsDirect( Display *dpy, GLXContext ctx );
-
-extern int glXGetConfig( Display *dpy, XVisualInfo *visual,
-			 int attrib, int *value );
-
-extern GLXContext glXGetCurrentContext( void );
-
-extern GLXDrawable glXGetCurrentDrawable( void );
-
-extern void glXWaitGL( void );
-
-extern void glXWaitX( void );
-
-extern void glXUseXFont( Font font, int first, int count, int list );
-
-
-/* GLX 1.1 and later */
-extern const char *glXQueryExtensionsString( Display *dpy, int screen );
-
-extern const char *glXQueryServerString( Display *dpy, int screen, int name );
-
-extern const char *glXGetClientString( Display *dpy, int name );
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
--- a/include/GL/nglx_unused.h
+++ /dev/null
@@ -1,27 +1,0 @@
-#ifndef NGLX_H
-#define NGLX_H
-
-#include <microwin/nano-X.h>
-#include "GL/gl.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef void *NGLXContext;
-typedef GR_DRAW_ID NGLXDrawable;
-
-extern NGLXContext nglXCreateContext( NGLXContext shareList, int flags );
-
-extern void nglXDestroyContext( NGLXContext ctx );
-
-extern int nglXMakeCurrent( NGLXDrawable drawable,
-			    NGLXContext ctx);
-
-extern void nglXSwapBuffers( NGLXDrawable drawable );
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif
--- a/include/GL/oscontext_unused.h
+++ /dev/null
@@ -1,37 +1,0 @@
-#ifndef _tgl_osbuffer_h_
-#define _tgl_osbuffer_h_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-typedef struct {
-  void **zbs;
-  void **framebuffers;
-  int numbuffers;
-  int xsize, ysize;
-} ostgl_context;
-
-ostgl_context *
-ostgl_create_context(const int xsize,
-                     const int ysize,
-                     const int depth,
-                     void **framebuffers,
-                     const int numbuffers);
-void
-ostgl_delete_context(ostgl_context *context);
-
-void
-ostgl_make_current(ostgl_context *context, const int index);
-
-void
-ostgl_resize(ostgl_context * context,
-             const int xsize,
-             const int ysize,
-             void **framebuffers);
-
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* _tgl_osbuffer_h_ */