backporting...
[dosdemo] / src / 3dgfx.h
index 366912f..f6250d5 100644 (file)
@@ -2,6 +2,24 @@
 #define THREEDGFX_H_
 
 #include "inttypes.h"
+#include "gfxutil.h"
+
+#define G3D_PIXFMT16
+typedef uint16_t g3d_pixel;
+
+#ifdef G3D_PIXFMT16
+#define G3D_PACK_RGB(r, g, b)  PACK_RGB16(r, g, b)
+#define G3D_UNPACK_R(c)                        UNPACK_R16(c)
+#define G3D_UNPACK_G(c)                        UNPACK_G16(c)
+#define G3D_UNPACK_B(c)                        UNPACK_B16(c)
+#endif
+#ifdef G3D_PIXFMT32
+#define G3D_PACK_RGB(r, g, b)  PACK_RGB32(r, g, b)
+#define G3D_UNPACK_R(c)                        UNPACK_R32(c)
+#define G3D_UNPACK_G(c)                        UNPACK_G32(c)
+#define G3D_UNPACK_B(c)                        UNPACK_B32(c)
+#endif
+
 
 struct g3d_vertex {
        float x, y, z, w;
@@ -26,7 +44,7 @@ enum {
        G3D_LIGHT1              = 0x000010,
        G3D_LIGHT2              = 0x000020,
        G3D_LIGHT3              = 0x000040,
-       G3D_TEXTURE             = 0x000080,
+       G3D_TEXTURE_2D  = 0x000080,     /* XXX doesn't affect anything, use g3d_polygon_mode */
        G3D_BLEND               = 0x000100,
        G3D_TEXTURE_GEN = 0x000200,
        G3D_CLIP_FRUSTUM = 0x000800,/* when disabled, don't clip against the frustum */
@@ -35,6 +53,9 @@ enum {
        G3D_CLIP_PLANE2 = 0x004000,
        G3D_CLIP_PLANE3 = 0x008000,
 
+       G3D_TEXTURE_MAT = 0x010000,
+       G3D_SPECULAR    = 0x020000,
+
        G3D_ALL = 0x7fffffff
 };
 
@@ -45,15 +66,14 @@ enum { G3D_CCW, G3D_CW };
 enum {
        G3D_WIRE,
        G3D_FLAT,
-       G3D_GOURAUD,
-       G3D_TEX,
-       G3D_TEX_GOURAUD
+       G3D_GOURAUD
 };
 
 /* matrix stacks */
 enum {
        G3D_MODELVIEW,
        G3D_PROJECTION,
+       G3D_TEXTURE,
 
        G3D_NUM_MATRICES
 };
@@ -93,6 +113,7 @@ void g3d_perspective(float vfov, float aspect, float znear, float zfar);
 const float *g3d_get_matrix(int which, float *m);
 
 void g3d_light_pos(int idx, float x, float y, float z);
+void g3d_light_dir(int idx, float x, float y, float z);
 void g3d_light_color(int idx, float r, float g, float b);
 
 void g3d_light_ambient(float r, float g, float b);