This is vb.h in view mode; [Download] [Up]
/* $Id: vb.h,v 1.2 1996/09/27 01:31:17 brianp Exp $ */
/*
* Mesa 3-D graphics library
* Version: 2.0
* Copyright (C) 1995-1996 Brian Paul
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Library General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This library is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* Library General Public License for more details.
*
* You should have received a copy of the GNU Library General Public
* License along with this library; if not, write to the Free
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*/
/*
* $Log: vb.h,v $
* Revision 1.2 1996/09/27 01:31:17 brianp
* added gl_init_vb() prototype
*
* Revision 1.1 1996/09/13 01:38:16 brianp
* Initial revision
*
*/
/*
* Vertex buffer: vertices from glVertex* are accumulated here until
* the buffer is full or glEnd() is called. Then the buffer is flushed
* (rendered) and reset.
*/
#ifndef VB_H
#define VB_H
#include "types.h"
/*
* Used in the bitmask for recording glMaterial calls between glBegin/glEnd:
*/
#define FRONT_AMBIENT_BIT 0x1
#define BACK_AMBIENT_BIT 0x2
#define FRONT_DIFFUSE_BIT 0x4
#define BACK_DIFFUSE_BIT 0x8
#define FRONT_SPECULAR_BIT 0x10
#define BACK_SPECULAR_BIT 0x20
#define FRONT_EMISSION_BIT 0x40
#define BACK_EMISSION_BIT 0x80
#define FRONT_SHININESS_BIT 0x100
#define BACK_SHININESS_BIT 0x200
#define FRONT_INDEXES_BIT 0x400
#define BACK_INDEXES_BIT 0x800
/* Flush VB when this number of vertices is accumulated: (a multiple of 12) */
#define VB_MAX 480
/* Arrays must also accomodate new vertices from clipping: */
#define VB_SIZE (VB_MAX + 2 * (6 + MAX_CLIP_PLANES))
/*
* Vertex buffer (not saved/restored on context switches)
*/
struct vertex_buffer {
GLfloat Obj[VB_SIZE][4]; /* Object coords */
GLfloat Eye[VB_SIZE][4]; /* Eye coords */
GLfloat Clip[VB_SIZE][4]; /* Clip coords */
GLfloat Win[VB_SIZE][3]; /* Window coords */
#ifdef MONDELLO
GLint Win2[VB_SIZE][3]; /* Integer window coords -PFM */
/* NOTE: on mondello uses correctly */
#endif
GLfloat Normal[VB_SIZE][3]; /* Normal vectors */
/* Colors are values in [0..RedScale], [0..GreenScale], [0,BlueScale],
* [0,AlphScale] and stored as integers if flat shading or as fixed
* point numbers if smooth shading.
*/
GLfixed Fcolor[VB_SIZE][4]; /* Front colors */
GLfixed Bcolor[VB_SIZE][4]; /* Back colors */
GLfixed (*Color)[4]; /* == Fcolor or Bcolor */
GLuint Findex[VB_SIZE]; /* Front color indexes */
GLuint Bindex[VB_SIZE]; /* Back color indexes */
GLuint *Index; /* == Findex or Bindex */
GLboolean Edgeflag[VB_SIZE]; /* Polygon edge flag */
GLfloat TexCoord[VB_SIZE][4]; /* Texture coords */
GLubyte Unclipped[VB_SIZE]; /* 0=clipped, 1=not clipped */
GLboolean AnyClipped; /* Were any vertices clipped? */
GLuint Start; /* First vertex to process */
GLuint Count; /* Number of vertexes in buffer */
GLuint Free; /* Next empty position for clipping */
/* to handle glMaterial calls inside glBegin/glEnd: */
GLboolean MaterialChanges; /* True if any glMaterial was called */
GLuint MaterialMask[VB_SIZE]; /* What material values to change */
struct gl_material Material[VB_SIZE][2]; /* New material settings */
GLboolean MonoColor; /* Do all vertices have same color? */
};
extern void gl_init_vb( struct vertex_buffer* VB );
#endif
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.