+++ /dev/null
-
-#if !defined( lint ) && !defined( SABER )
-static const char sccsid[] = "@(#)buildlwo.c 4.02 97/04/20 xlockmore";
-
-#endif
-
-/*-
- * buildlwo.c: Lightwave Object Display List Builder for OpenGL
- *
- * This module can be called by any GL mode wishing to use
- * objects created in NewTek's Lightwave 3D. The objects must
- * first be converted to C source with my converter "lw2ogl".
- * If other people are interested in this, I will put up a
- * web page for it at http://www.netaxs.com/~emackey/lw2ogl/
- *
- * by Ed Mackey, 4/19/97
- *
- */
-
-#ifndef STANDALONE
-#include "xlock.h"
-#endif
-
-#ifdef USE_GL
-
-#ifdef STANDALONE
-#include <GL/glx.h>
-#endif
-#include <GL/gl.h>
-#include <GL/glu.h>
-#include "buildlwo.h"
-
-GLuint
-BuildLWO(int wireframe, struct lwo *object)
-{
- GLuint dl_num;
- GLfloat *pnts, *normals, three[3], *grab;
- unsigned short int *pols;
- int p, num_pnts = 0;
-
- dl_num = glGenLists(1);
- if (!dl_num)
- return (0);
-
- pnts = object->pnts;
- normals = object->normals;
- pols = object->pols;
-
- glNewList(dl_num, GL_COMPILE);
-
- if (!pols) {
- num_pnts = object->num_pnts;
- glBegin(GL_POINTS);
- for (p = 0; p < num_pnts; ++p) {
- three[0] = *(pnts++);
- three[1] = *(pnts++);
- three[2] = *(pnts++);
- glVertex3fv(three);
- }
- glEnd();
- } else
- for (;;) {
- if (num_pnts <= 0) {
- num_pnts = *pols + 2;
- if (num_pnts < 3)
- break;
- if (num_pnts == 3) {
- glBegin(GL_POINTS);
- } else if (num_pnts == 4) {
- glBegin(GL_LINES);
- } else {
- three[0] = *(normals++);
- three[1] = *(normals++);
- three[2] = *(normals++);
- glNormal3fv(three);
- if (wireframe)
- glBegin(GL_LINE_LOOP);
- else
- glBegin(GL_POLYGON);
- }
- } else if (num_pnts == 1) {
- glEnd();
- } else {
- grab = pnts + ((int) (*pols) * 3);
- three[0] = *(grab++);
- three[1] = *(grab++);
- three[2] = *(grab++);
- glVertex3fv(three);
- }
- --num_pnts;
- ++pols;
- }
-
- glEndList();
-
- return (dl_num);
-}
-
-#endif /* USE_GL */
-
-/* End of buildlwo.c */