📄 glcore.h
字号:
/* ** Framebuffer base address */ void *base; /* ** Framebuffer size (in bytes) */ GLuint size; /* ** Size (in bytes) of each element in the framebuffer */ GLuint elementSize; GLuint elementSizeLog2; /* ** Element skip from one scanline to the next. ** If the buffer is part of another buffer (for example, fullscreen ** front buffer), outerWidth is the width of that buffer. */ GLint outerWidth; /* ** outerWidth * elementSize */ GLint byteWidth; /* ** Allocation/deallocation is done based on this handle. A handle ** is conceptually different from the framebuffer 'base'. */ void *handle; /* imported */ GLboolean (*resize)(__GLdrawableBuffer *buf, GLint x, GLint y, GLuint width, GLuint height, __GLdrawablePrivate *glPriv, GLuint bufferMask); void (*lock)(__GLdrawableBuffer *buf, __GLdrawablePrivate *glPriv); void (*unlock)(__GLdrawableBuffer *buf, __GLdrawablePrivate *glPriv); void (*fill)(__GLdrawableBuffer *buf, __GLdrawablePrivate *glPriv, GLuint val, GLint x, GLint y, GLint w, GLint h); void (*free)(__GLdrawableBuffer *buf, __GLdrawablePrivate *glPriv); /* exported */ void (*freePrivate)(__GLdrawableBuffer *buf, __GLdrawablePrivate *glPriv);#ifdef __cplusplus void *privatePtr;#else void *private;#endif /* private */ void *other; /* implementation private data */ __GLbufMainInitFn mainInit; __GLbufFallbackInitFn fallbackInit;};/*** The context side of the drawable private*/struct __GLdrawablePrivateRec { /* ** Drawable Modes */ __GLcontextModes *modes; /* ** Drawable size */ GLuint width, height; /* ** Origin in screen coordinates of the drawable */ GLint xOrigin, yOrigin;#ifdef __GL_ALIGNED_BUFFERS /* ** Drawable offset from screen origin */ GLint xOffset, yOffset; /* ** Alignment restriction */ GLint xAlignment, yAlignment;#endif /* ** Should we invert the y axis? */ GLint yInverted; /* ** Mask specifying which buffers are renderable by the hw */ GLuint accelBufferMask; /* ** the buffers themselves */ __GLdrawableBuffer frontBuffer; __GLdrawableBuffer backBuffer; __GLdrawableBuffer accumBuffer; __GLdrawableBuffer depthBuffer; __GLdrawableBuffer stencilBuffer;#if defined(__GL_NUMBER_OF_AUX_BUFFERS) && (__GL_NUMBER_OF_AUX_BUFFERS > 0) __GLdrawableBuffer *auxBuffer;#endif __GLdrawableRegion ownershipRegion; /* ** Lock for the drawable private structure */ void *lock;#ifdef DEBUG /* lock debugging info */ int lockRefCount; int lockLine[10]; char *lockFile[10];#endif /* imported */ void *(*malloc)(size_t size); void *(*calloc)(size_t numElem, size_t elemSize); void *(*realloc)(void *oldAddr, size_t newSize); void (*free)(void *addr); GLboolean (*addSwapRect)(__GLdrawablePrivate *glPriv, GLint x, GLint y, GLsizei width, GLsizei height); void (*setClipRect)(__GLdrawablePrivate *glPriv, GLint x, GLint y, GLsizei width, GLsizei height); void (*updateClipRegion)(__GLdrawablePrivate *glPriv); GLboolean (*resize)(__GLdrawablePrivate *glPriv); void (*getDrawableSize)(__GLdrawablePrivate *glPriv, GLint *x, GLint *y, GLuint *width, GLuint *height); void (*lockDP)(__GLdrawablePrivate *glPriv, __GLcontext *gc); void (*unlockDP)(__GLdrawablePrivate *glPriv); /* exported */#ifdef __cplusplus void *privatePtr;#else void *private;#endif void (*freePrivate)(__GLdrawablePrivate *); /* client data */ void *other;};/*** Macros to lock/unlock the drawable private*/#if defined(DEBUG)#define __GL_LOCK_DP(glPriv,gc) \ (*(glPriv)->lockDP)(glPriv,gc); \ (glPriv)->lockLine[(glPriv)->lockRefCount] = __LINE__; \ (glPriv)->lockFile[(glPriv)->lockRefCount] = __FILE__; \ (glPriv)->lockRefCount++#define __GL_UNLOCK_DP(glPriv) \ (glPriv)->lockRefCount--; \ (glPriv)->lockLine[(glPriv)->lockRefCount] = 0; \ (glPriv)->lockFile[(glPriv)->lockRefCount] = NULL; \ (*(glPriv)->unlockDP)(glPriv)#else /* DEBUG */#define __GL_LOCK_DP(glPriv,gc) (*(glPriv)->lockDP)(glPriv,gc)#define __GL_UNLOCK_DP(glPriv) (*(glPriv)->unlockDP)(glPriv)#endif /* DEBUG *//*** Procedures which are imported by the GL from the surrounding** "operating system". Math functions are not considered part of the** "operating system".*/typedef struct __GLimportsRec { /* Memory management */ void * (*malloc)(__GLcontext *gc, size_t size); void *(*calloc)(__GLcontext *gc, size_t numElem, size_t elemSize); void *(*realloc)(__GLcontext *gc, void *oldAddr, size_t newSize); void (*free)(__GLcontext *gc, void *addr); /* Error handling */ void (*warning)(__GLcontext *gc, char *fmt); void (*fatal)(__GLcontext *gc, char *fmt); /* other system calls */ char *(CAPI *getenv)(__GLcontext *gc, const char *var); int (CAPI *atoi)(__GLcontext *gc, const char *str); int (CAPI *sprintf)(__GLcontext *gc, char *str, const char *fmt, ...); void *(CAPI *fopen)(__GLcontext *gc, const char *path, const char *mode); int (CAPI *fclose)(__GLcontext *gc, void *stream); int (CAPI *fprintf)(__GLcontext *gc, void *stream, const char *fmt, ...); /* Drawing surface management */ __GLdrawablePrivate *(*getDrawablePrivate)(__GLcontext *gc); __GLdrawablePrivate *(*getReadablePrivate)(__GLcontext *gc); /* Operating system dependent data goes here */ void *other;} __GLimports;/************************************************************************//*** Procedures which are exported by the GL to the surrounding "operating** system" so that it can manage multiple GL context's.*/typedef struct __GLexportsRec { /* Context management (return GL_FALSE on failure) */ GLboolean (*destroyContext)(__GLcontext *gc); GLboolean (*loseCurrent)(__GLcontext *gc); /* oldglPriv isn't used anymore, kept for backwards compatibility */ GLboolean (*makeCurrent)(__GLcontext *gc); GLboolean (*shareContext)(__GLcontext *gc, __GLcontext *gcShare); GLboolean (*copyContext)(__GLcontext *dst, const __GLcontext *src, GLuint mask); GLboolean (*forceCurrent)(__GLcontext *gc); /* Drawing surface notification callbacks */ GLboolean (*notifyResize)(__GLcontext *gc); void (*notifyDestroy)(__GLcontext *gc); void (*notifySwapBuffers)(__GLcontext *gc); /* Dispatch table override control for external agents like libGLS */ struct __GLdispatchStateRec* (*dispatchExec)(__GLcontext *gc); void (*beginDispatchOverride)(__GLcontext *gc); void (*endDispatchOverride)(__GLcontext *gc);} __GLexports;/************************************************************************//*** This must be the first member of a __GLcontext structure. This is the** only part of a context that is exposed to the outside world; everything** else is opaque.*/struct __GLinterfaceRec { __GLimports imports; __GLexports exports;};extern __GLcontext *__glCoreCreateContext(__GLimports *, __GLcontextModes *);extern void __glCoreNopDispatch(void);#endif /* __gl_core_h_ */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -