83#define FB_TEXTURE 0X10
101 ctx->Feedback.BufferSize = 0;
107 ctx->Feedback.Mask = 0;
132 ctx->Feedback.Mask = 0;
136 ctx->Feedback.BufferSize =
size;
138 ctx->Feedback.Count = 0;
211 ctx->Select.BufferCount = 0;
214 ctx->Select.HitMinZ = 1.0;
215 ctx->Select.HitMaxZ = 0.0;
224 ctx->Select.NameStackDepth = 0;
226 ctx->Select.HitMinZ = 1.0;
227 ctx->Select.HitMaxZ = 0.0;
232#define WRITE_RECORD( CTX, V ) \
233 if (CTX->Select.BufferCount < CTX->Select.BufferSize) { \
234 CTX->Select.Buffer[CTX->Select.BufferCount] = (V); \
236 CTX->Select.BufferCount++;
243 if (z < ctx->Select.HitMinZ) {
244 ctx->Select.HitMinZ =
z;
246 if (
z >
ctx->Select.HitMaxZ) {
247 ctx->Select.HitMaxZ =
z;
268 for (
i=0;
i<
ctx->Select.NameStackDepth;
i++) {
274 ctx->Select.HitMinZ = 1.0;
275 ctx->Select.HitMaxZ = -1.0;
289 if (
ctx->Select.NameStackDepth==0) {
293 if (
ctx->Select.HitFlag) {
297 ctx->Select.NameStack[
ctx->Select.NameStackDepth-1] =
name;
314 if (
ctx->Select.HitFlag) {
318 ctx->Select.NameStack[
ctx->Select.NameStackDepth++] =
name;
336 if (
ctx->Select.HitFlag) {
339 if (
ctx->Select.NameStackDepth>0) {
340 ctx->Select.NameStackDepth--;
366 switch (
ctx->RenderMode) {
371 if (
ctx->Select.HitFlag) {
374 if (
ctx->Select.BufferCount >
ctx->Select.BufferSize) {
384 ctx->Select.BufferCount = 0;
385 ctx->Select.Hits = 0;
386 ctx->Select.NameStackDepth = 0;
389 if (
ctx->Feedback.Count >
ctx->Feedback.BufferSize) {
396 ctx->Feedback.Count = 0;
407 if (
ctx->Select.BufferSize==0) {
413 if (
ctx->Feedback.BufferSize==0) {
#define MAX_NAME_STACK_DEPTH
void gl_warning(const GLcontext *ctx, const char *s)
void gl_error(GLcontext *ctx, GLenum error, const char *s)
void gl_feedback_vertex(GLcontext *ctx, GLfloat x, GLfloat y, GLfloat z, GLfloat w, const GLfloat color[4], GLfloat index, const GLfloat texcoord[4])
#define WRITE_RECORD(CTX, V)
void gl_PopName(GLcontext *ctx)
void gl_update_hitflag(GLcontext *ctx, GLfloat z)
void gl_LoadName(GLcontext *ctx, GLuint name)
GLint gl_RenderMode(GLcontext *ctx, GLenum mode)
void gl_PushName(GLcontext *ctx, GLuint name)
void gl_PassThrough(GLcontext *ctx, GLfloat token)
static void write_hit_record(GLcontext *ctx)
void gl_InitNames(GLcontext *ctx)
void gl_FeedbackBuffer(GLcontext *ctx, GLsizei size, GLenum type, GLfloat *buffer)
void gl_SelectBuffer(GLcontext *ctx, GLsizei size, GLuint *buffer)
#define FEEDBACK_TOKEN(CTX, T)
GLint GLint GLint GLint GLint x
GLuint GLuint GLsizei GLenum type
#define GL_INVALID_OPERATION
#define GL_3D_COLOR_TEXTURE
#define GL_STACK_OVERFLOW
GLint GLint GLint GLint GLint GLint y
#define GL_4D_COLOR_TEXTURE
#define GL_STACK_UNDERFLOW
#define GL_PASS_THROUGH_TOKEN
GLubyte GLubyte GLubyte GLubyte w
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble const GLfloat const GLdouble const GLfloat GLint i
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat GLuint GLbitfield GLfloat GLint GLuint GLboolean GLenum GLfloat GLenum GLbitfield GLenum GLfloat GLfloat GLint GLint const GLfloat GLenum GLfloat GLfloat GLint GLint GLfloat GLfloat GLint GLint const GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat GLint GLfloat GLfloat const GLdouble * u
GLsizei GLenum const GLvoid GLsizei GLenum GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLint GLint GLint GLshort GLshort GLshort GLubyte GLubyte GLubyte GLuint GLuint GLuint GLushort GLushort GLushort GLbyte GLbyte GLbyte GLbyte GLdouble GLdouble GLdouble GLdouble GLfloat GLfloat GLfloat GLfloat GLint GLint GLint GLint GLshort GLshort GLshort GLshort GLubyte GLubyte GLubyte GLubyte GLuint GLuint GLuint GLuint GLushort GLushort GLushort GLushort GLboolean const GLdouble const GLfloat const GLint const GLshort const GLbyte const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLdouble const GLfloat const GLfloat const GLint const GLint const GLshort const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort const GLdouble const GLfloat const GLint const GLshort GLenum GLenum GLenum GLfloat GLenum GLint GLenum GLenum GLenum GLfloat GLenum GLenum GLint GLenum GLfloat GLenum GLint GLint GLushort GLenum GLenum GLfloat GLenum GLenum GLint GLfloat const GLubyte GLenum GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLint GLint GLsizei GLsizei GLint GLenum GLenum const GLvoid GLenum GLenum const GLfloat GLenum GLenum const GLint GLenum GLenum const GLdouble GLenum GLenum const GLfloat GLenum GLenum const GLint GLsizei GLuint GLfloat token
#define INSIDE_BEGIN_END(CTX)