⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 glxclient.h

📁 mesa-6.5-minigui源码
💻 H
📖 第 1 页 / 共 2 页
字号:
/*** License Applicability. Except to the extent portions of this file are** made subject to an alternative license as permitted in the SGI Free** Software License B, Version 1.1 (the "License"), the contents of this** file are subject only to the provisions of the License. You may not use** this file except in compliance with the License. You may obtain a copy** of the License at Silicon Graphics, Inc., attn: Legal Services, 1600** Amphitheatre Parkway, Mountain View, CA 94043-1351, or at:** ** http://oss.sgi.com/projects/FreeB** ** Note that, as provided in the License, the Software is distributed on an** "AS IS" basis, with ALL EXPRESS AND IMPLIED WARRANTIES AND CONDITIONS** DISCLAIMED, INCLUDING, WITHOUT LIMITATION, ANY IMPLIED WARRANTIES AND** CONDITIONS OF MERCHANTABILITY, SATISFACTORY QUALITY, FITNESS FOR A** PARTICULAR PURPOSE, AND NON-INFRINGEMENT.** ** Original Code. The Original Code is: OpenGL Sample Implementation,** Version 1.2.1, released January 26, 2000, developed by Silicon Graphics,** Inc. The Original Code is Copyright (c) 1991-2000 Silicon Graphics, Inc.** Copyright in any portions created by third parties is as indicated** elsewhere herein. All Rights Reserved.** ** Additional Notice Provisions: The application programming interfaces** established by SGI in conjunction with the Original Code are The** OpenGL(R) Graphics System: A Specification (Version 1.2.1), released** April 1, 1999; The OpenGL(R) Graphics System Utility Library (Version** 1.3), released November 4, 1998; and OpenGL(R) Graphics with the X** Window System(R) (Version 1.3), released October 19, 1998. This software** was created using the OpenGL(R) version 1.2.1 Sample Implementation** published by SGI, but has not been independently verified as being** compliant with the OpenGL(R) version 1.2.1 Specification.*//* $XFree86: xc/lib/GL/glx/glxclient.h,v 1.21 2004/02/09 23:46:31 alanh Exp $ *//** * \file glxclient.h * Direct rendering support added by Precision Insight, Inc. * * \author Kevin E. Martin <kevin@precisioninsight.com> */#ifndef _GLX_client_h_#define _GLX_client_h_#define NEED_REPLIES#define NEED_EVENTS#include <X11/Xproto.h>#include <X11/Xlibint.h>#define GLX_GLXEXT_PROTOTYPES#include <GL/glx.h>#include <GL/glxext.h>#include <string.h>#include <stdlib.h>#include <stdio.h>#ifdef WIN32#include <stdint.h>#endif#include "GL/glxint.h"#include "GL/glxproto.h"#include "GL/internal/glcore.h"#include "glapitable.h"#include "glxextensions.h"#if defined( USE_XTHREADS )# include <X11/Xthreads.h>#elif defined( PTHREADS )# include <pthread.h>#endif#define GLX_MAJOR_VERSION	1	/* current version numbers */#define GLX_MINOR_VERSION	4#define __GLX_MAX_TEXTURE_UNITS 32typedef struct __GLXcontextRec __GLXcontext;typedef struct __GLXdisplayPrivateRec __GLXdisplayPrivate;typedef struct _glapi_table __GLapi;/************************************************************************/#ifdef GLX_DIRECT_RENDERING#include <GL/internal/dri_interface.h>/** * Display dependent methods.  This structure is initialized during the * \c driCreateDisplay call. */struct __DRIdisplayRec {    /**     * Method to destroy the private DRI display data.     */    void (*destroyDisplay)(Display *dpy, void *displayPrivate);    /**     * Opaque pointer to private per display direct rendering data.     * \c NULL if direct rendering is not supported on this display.     */    struct __DRIdisplayPrivateRec *private;    /**     * Array of pointers to methods to create and initialize the private DRI     * screen data.     */    PFNCREATENEWSCREENFUNC * createNewScreen;};/*** We keep a linked list of these structures, one per DRI device driver.*/struct __DRIdriverRec {   const char *name;   void *handle;   PFNCREATENEWSCREENFUNC createNewScreenFunc;   struct __DRIdriverRec *next;};/*** Function to create and DRI display data and initialize the display** dependent methods.*/extern void *driCreateDisplay(Display *dpy, __DRIdisplay *pdisp);extern  __DRIdriver *driGetDriver(Display *dpy, int scrNum);extern void DRI_glXUseXFont( Font font, int first, int count, int listbase );/*** Functions to obtain driver configuration information from a direct** rendering client application*/extern const char *glXGetScreenDriver (Display *dpy, int scrNum);extern const char *glXGetDriverConfig (const char *driverName);extern Bool __glXWindowExists(Display *dpy, GLXDrawable draw);#endif/************************************************************************/#define __GL_CLIENT_ATTRIB_STACK_DEPTH 16typedef struct __GLXpixelStoreModeRec {    GLboolean swapEndian;    GLboolean lsbFirst;    GLuint rowLength;    GLuint imageHeight;    GLuint imageDepth;    GLuint skipRows;    GLuint skipPixels;    GLuint skipImages;    GLuint alignment;} __GLXpixelStoreMode;typedef struct __GLXattributeRec {    GLuint mask;    /**     * Pixel storage state.  Most of the pixel store mode state is kept     * here and used by the client code to manage the packing and     * unpacking of data sent to/received from the server.     */    __GLXpixelStoreMode storePack, storeUnpack;    /**     * Is EXT_vertex_array / GL 1.1 DrawArrays protocol specifically     * disabled?     */    GLboolean NoDrawArraysProtocol;        /**     * Vertex Array storage state.  The vertex array component     * state is stored here and is used to manage the packing of     * DrawArrays data sent to the server.     */    struct array_state_vector * array_state;} __GLXattribute;typedef struct __GLXattributeMachineRec {	__GLXattribute *stack[__GL_CLIENT_ATTRIB_STACK_DEPTH];	__GLXattribute **stackPointer;} __GLXattributeMachine;/** * GLX state that needs to be kept on the client.  One of these records * exist for each context that has been made current by this client. */struct __GLXcontextRec {    /**     * \name Drawing command buffer.     *     * Drawing commands are packed into this buffer before being sent as a     * single GLX protocol request.  The buffer is sent when it overflows or     * is flushed by \c __glXFlushRenderBuffer.  \c pc is the next location     * in the buffer to be filled.  \c limit is described above in the buffer     * slop discussion.     *     * Commands that require large amounts of data to be transfered will     * also use this buffer to hold a header that describes the large     * command.     *     * These must be the first 6 fields since they are static initialized     * in the dummy context in glxext.c     */    /*@{*/    GLubyte *buf;    GLubyte *pc;    GLubyte *limit;    GLubyte *bufEnd;    GLint bufSize;    /*@}*/    /**     * The XID of this rendering context.  When the context is created a     * new XID is allocated.  This is set to None when the context is     * destroyed but is still current to some thread. In this case the     * context will be freed on next MakeCurrent.     */    XID xid;    /**     * The XID of the \c shareList context.     */    XID share_xid;    /**     * Visual id.     *      * \deprecated     * This filed has been largely been replaced by the \c mode field, but     * the work is not quite done.     */    VisualID vid;    /**     * Screen number.     */    GLint screen;    /**     * \c GL_TRUE if the context was created with ImportContext, which     * means the server-side context was created by another X client.     */    GLboolean imported;    /**     * The context tag returned by MakeCurrent when this context is made     * current. This tag is used to identify the context that a thread has     * current so that proper server context management can be done.  It is     * used for all context specific commands (i.e., \c Render, \c RenderLarge,     * \c WaitX, \c WaitGL, \c UseXFont, and \c MakeCurrent (for the old     * context)).     */    GLXContextTag currentContextTag;    /**     * \name Rendering mode     *     * The rendering mode is kept on the client as well as the server.     * When \c glRenderMode is called, the buffer associated with the     * previous rendering mode (feedback or select) is filled.     */    /*@{*/    GLenum renderMode;    GLfloat *feedbackBuf;    GLuint *selectBuf;    /*@}*/    /**     * This is \c GL_TRUE if the pixel unpack modes are such that an image     * can be unpacked from the clients memory by just copying.  It may     * still be true that the server will have to do some work.  This     * just promises that a straight copy will fetch the correct bytes.     */    GLboolean fastImageUnpack;    /**     * Fill newImage with the unpacked form of \c oldImage getting it     * ready for transport to the server.     */    void (*fillImage)(__GLXcontext*, GLint, GLint, GLint, GLint, GLenum,		      GLenum, const GLvoid*, GLubyte*, GLubyte*);    /**     * Client side attribs.     */    __GLXattributeMachine attributes;    /**     * Client side error code.  This is set when client side gl API     * routines need to set an error because of a bad enumerant or     * running out of memory, etc.     */    GLenum error;    /**     * Whether this context does direct rendering.     */    Bool isDirect;    /**     * \c dpy of current display for this context.  Will be \c NULL if not     * current to any display, or if this is the "dummy context".     */    Display *currentDpy;    /**     * The current drawable for this context.  Will be None if this     * context is not current to any drawable.  currentReadable is below.     */    GLXDrawable currentDrawable;    /**     * \name GL Constant Strings     *     * Constant strings that describe the server implementation     * These pertain to GL attributes, not to be confused with     * GLX versioning attributes.     */    /*@{*/    GLubyte *vendor;    GLubyte *renderer;    GLubyte *version;    GLubyte *extensions;    /*@}*/    /**     * Record the dpy this context was created on for later freeing     */    Display *createDpy;    /**     * Maximum small render command size.  This is the smaller of 64k and     * the size of the above buffer.     */    GLint maxSmallRenderCommandSize;    /**     * Major opcode for the extension.  Copied here so a lookup isn't     * needed.     */    GLint majorOpcode;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -