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

📄 dd.h

📁 Mesa is an open-source implementation of the OpenGL specification - a system for rendering interacti
💻 H
📖 第 1 页 / 共 3 页
字号:
/** * \file dd.h * Device driver interfaces. *//* * Mesa 3-D graphics library * Version:  6.5.2 * * Copyright (C) 1999-2006  Brian Paul   All Rights Reserved. * * Permission is hereby granted, free of charge, to any person obtaining a * copy of this software and associated documentation files (the "Software"), * to deal in the Software without restriction, including without limitation * the rights to use, copy, modify, merge, publish, distribute, sublicense, * and/or sell copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following conditions: * * The above copyright notice and this permission notice shall be included * in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. */#ifndef DD_INCLUDED#define DD_INCLUDED/* THIS FILE ONLY INCLUDED BY mtypes.h !!!!! */struct gl_pixelstore_attrib;struct mesa_display_list;/** * Device driver function table. * Core Mesa uses these function pointers to call into device drivers. * Most of these functions directly correspond to OpenGL state commands. * Core Mesa will call these functions after error checking has been done * so that the drivers don't have to worry about error testing. * * Vertex transformation/clipping/lighting is patched into the T&L module. * Rasterization functions are patched into the swrast module. * * Note: when new functions are added here, the drivers/common/driverfuncs.c * file should be updated too!!! */struct dd_function_table {   /**    * Return a string as needed by glGetString().    * Only the GL_RENDERER query must be implemented.  Otherwise, NULL can be    * returned.    */   const GLubyte * (*GetString)( GLcontext *ctx, GLenum name );   /**    * Notify the driver after Mesa has made some internal state changes.      *    * This is in addition to any state change callbacks Mesa may already have    * made.    */   void (*UpdateState)( GLcontext *ctx, GLbitfield new_state );   /**    * Get the width and height of the named buffer/window.    *    * Mesa uses this to determine when the driver's window size has changed.    * XXX OBSOLETE: this function will be removed in the future.    */   void (*GetBufferSize)( GLframebuffer *buffer,                          GLuint *width, GLuint *height );   /**    * Resize the given framebuffer to the given size.    * XXX OBSOLETE: this function will be removed in the future.    */   void (*ResizeBuffers)( GLcontext *ctx, GLframebuffer *fb,                          GLuint width, GLuint height);   /**    * Called whenever an error is generated.      * __GLcontextRec::ErrorValue contains the error value.    */   void (*Error)( GLcontext *ctx );   /**    * This is called whenever glFinish() is called.    */   void (*Finish)( GLcontext *ctx );   /**    * This is called whenever glFlush() is called.    */   void (*Flush)( GLcontext *ctx );   /**    * Clear the color/depth/stencil/accum buffer(s).    * \param buffers  a bitmask of BUFFER_BIT_* flags indicating which    *                 renderbuffers need to be cleared.    */   void (*Clear)( GLcontext *ctx, GLbitfield buffers );   /**    * Execute glAccum command.    */   void (*Accum)( GLcontext *ctx, GLenum op, GLfloat value );   /**    * \name Image-related functions    */   /*@{*/   /**    * Called by glDrawPixels().    * \p unpack describes how to unpack the source image data.    */   void (*DrawPixels)( GLcontext *ctx,		       GLint x, GLint y, GLsizei width, GLsizei height,		       GLenum format, GLenum type,		       const struct gl_pixelstore_attrib *unpack,		       const GLvoid *pixels );   /**    * Called by glReadPixels().    */   void (*ReadPixels)( GLcontext *ctx,		       GLint x, GLint y, GLsizei width, GLsizei height,		       GLenum format, GLenum type,		       const struct gl_pixelstore_attrib *unpack,		       GLvoid *dest );   /**    * Called by glCopyPixels().      */   void (*CopyPixels)( GLcontext *ctx, GLint srcx, GLint srcy,                       GLsizei width, GLsizei height,                       GLint dstx, GLint dsty, GLenum type );   /**    * Called by glBitmap().      */   void (*Bitmap)( GLcontext *ctx,		   GLint x, GLint y, GLsizei width, GLsizei height,		   const struct gl_pixelstore_attrib *unpack,		   const GLubyte *bitmap );   /*@}*/      /**    * \name Texture image functions    */   /*@{*/   /**    * Choose texture format.    *     * This is called by the \c _mesa_store_tex[sub]image[123]d() fallback    * functions.  The driver should examine \p internalFormat and return a    * pointer to an appropriate gl_texture_format.    */   const struct gl_texture_format *(*ChooseTextureFormat)( GLcontext *ctx,                      GLint internalFormat, GLenum srcFormat, GLenum srcType );   /**    * Called by glTexImage1D().    *     * \param target user specified.    * \param format user specified.    * \param type user specified.    * \param pixels user specified.    * \param packing indicates the image packing of pixels.    * \param texObj is the target texture object.    * \param texImage is the target texture image.  It will have the texture \p    * width, \p height, \p depth, \p border and \p internalFormat information.    *     * \p retainInternalCopy is returned by this function and indicates whether    * core Mesa should keep an internal copy of the texture image.    *    * Drivers should call a fallback routine from texstore.c if needed.    */   void (*TexImage1D)( GLcontext *ctx, GLenum target, GLint level,                       GLint internalFormat,                       GLint width, GLint border,                       GLenum format, GLenum type, const GLvoid *pixels,                       const struct gl_pixelstore_attrib *packing,                       struct gl_texture_object *texObj,                       struct gl_texture_image *texImage );   /**    * Called by glTexImage2D().    *     * \sa dd_function_table::TexImage1D.    */   void (*TexImage2D)( GLcontext *ctx, GLenum target, GLint level,                       GLint internalFormat,                       GLint width, GLint height, GLint border,                       GLenum format, GLenum type, const GLvoid *pixels,                       const struct gl_pixelstore_attrib *packing,                       struct gl_texture_object *texObj,                       struct gl_texture_image *texImage );      /**    * Called by glTexImage3D().    *     * \sa dd_function_table::TexImage1D.    */   void (*TexImage3D)( GLcontext *ctx, GLenum target, GLint level,                       GLint internalFormat,                       GLint width, GLint height, GLint depth, GLint border,                       GLenum format, GLenum type, const GLvoid *pixels,                       const struct gl_pixelstore_attrib *packing,                       struct gl_texture_object *texObj,                       struct gl_texture_image *texImage );   /**    * Called by glTexSubImage1D().    *    * \param target user specified.    * \param level user specified.    * \param xoffset user specified.    * \param yoffset user specified.    * \param zoffset user specified.    * \param width user specified.    * \param height user specified.    * \param depth user specified.    * \param format user specified.    * \param type user specified.    * \param pixels user specified.    * \param packing indicates the image packing of pixels.    * \param texObj is the target texture object.    * \param texImage is the target texture image.  It will have the texture \p    * width, \p height, \p border and \p internalFormat information.    *    * The driver should use a fallback routine from texstore.c if needed.    */   void (*TexSubImage1D)( GLcontext *ctx, GLenum target, GLint level,                          GLint xoffset, GLsizei width,                          GLenum format, GLenum type,                          const GLvoid *pixels,                          const struct gl_pixelstore_attrib *packing,                          struct gl_texture_object *texObj,                          struct gl_texture_image *texImage );      /**    * Called by glTexSubImage2D().    *    * \sa dd_function_table::TexSubImage1D.    */   void (*TexSubImage2D)( GLcontext *ctx, GLenum target, GLint level,                          GLint xoffset, GLint yoffset,                          GLsizei width, GLsizei height,                          GLenum format, GLenum type,                          const GLvoid *pixels,                          const struct gl_pixelstore_attrib *packing,                          struct gl_texture_object *texObj,                          struct gl_texture_image *texImage );      /**    * Called by glTexSubImage3D().    *    * \sa dd_function_table::TexSubImage1D.    */   void (*TexSubImage3D)( GLcontext *ctx, GLenum target, GLint level,                          GLint xoffset, GLint yoffset, GLint zoffset,                          GLsizei width, GLsizei height, GLint depth,                          GLenum format, GLenum type,                          const GLvoid *pixels,                          const struct gl_pixelstore_attrib *packing,                          struct gl_texture_object *texObj,                          struct gl_texture_image *texImage );   /**    * Called by glGetTexImage().    */   void (*GetTexImage)( GLcontext *ctx, GLenum target, GLint level,                        GLenum format, GLenum type, GLvoid *pixels,                        struct gl_texture_object *texObj,                        struct gl_texture_image *texImage );   /**    * Called by glCopyTexImage1D().    *     * Drivers should use a fallback routine from texstore.c if needed.    */   void (*CopyTexImage1D)( GLcontext *ctx, GLenum target, GLint level,                           GLenum internalFormat, GLint x, GLint y,                           GLsizei width, GLint border );   /**    * Called by glCopyTexImage2D().    *     * Drivers should use a fallback routine from texstore.c if needed.    */   void (*CopyTexImage2D)( GLcontext *ctx, GLenum target, GLint level,                           GLenum internalFormat, GLint x, GLint y,                           GLsizei width, GLsizei height, GLint border );   /**    * Called by glCopyTexSubImage1D().    *     * Drivers should use a fallback routine from texstore.c if needed.    */   void (*CopyTexSubImage1D)( GLcontext *ctx, GLenum target, GLint level,                              GLint xoffset,                              GLint x, GLint y, GLsizei width );   /**    * Called by glCopyTexSubImage2D().    *     * Drivers should use a fallback routine from texstore.c if needed.    */   void (*CopyTexSubImage2D)( GLcontext *ctx, GLenum target, GLint level,                              GLint xoffset, GLint yoffset,                              GLint x, GLint y,                              GLsizei width, GLsizei height );   /**    * Called by glCopyTexSubImage3D().    *     * Drivers should use a fallback routine from texstore.c if needed.    */   void (*CopyTexSubImage3D)( GLcontext *ctx, GLenum target, GLint level,                              GLint xoffset, GLint yoffset, GLint zoffset,                              GLint x, GLint y,                              GLsizei width, GLsizei height );   /**    * Called by glGenerateMipmap() or when GL_GENERATE_MIPMAP_SGIS is enabled.    */   void (*GenerateMipmap)(GLcontext *ctx, GLenum target,                          struct gl_texture_object *texObj);   /**    * Called by glTexImage[123]D when user specifies a proxy texture    * target.      *    * \return GL_TRUE if the proxy test passes, or GL_FALSE if the test fails.    */   GLboolean (*TestProxyTexImage)(GLcontext *ctx, GLenum target,                                  GLint level, GLint internalFormat,                                  GLenum format, GLenum type,                                  GLint width, GLint height,                                  GLint depth, GLint border);   /*@}*/      /**    * \name Compressed texture functions    */   /*@{*/   /**    * Called by glCompressedTexImage1D().    *    * \param target user specified.    * \param format user specified.    * \param type user specified.    * \param pixels user specified.    * \param packing indicates the image packing of pixels.    * \param texObj is the target texture object.    * \param texImage is the target texture image.  It will have the texture \p    * width, \p height, \p depth, \p border and \p internalFormat information.    *          * \a retainInternalCopy is returned by this function and indicates whether    * core Mesa should keep an internal copy of the texture image.    */   void (*CompressedTexImage1D)( GLcontext *ctx, GLenum target,                                 GLint level, GLint internalFormat,                                 GLsizei width, GLint border,                                 GLsizei imageSize, const GLvoid *data,                                 struct gl_texture_object *texObj,                                 struct gl_texture_image *texImage );   /**    * Called by glCompressedTexImage2D().

⌨️ 快捷键说明

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