161 lines
4.6 KiB
C
161 lines
4.6 KiB
C
|
/*
|
||
|
* Mesa 3-D graphics library
|
||
|
* Version: 6.1
|
||
|
*
|
||
|
* Copyright (C) 1999-2004 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.
|
||
|
*/
|
||
|
|
||
|
/*
|
||
|
* DOS/DJGPP device driver for Mesa
|
||
|
*
|
||
|
* Author: Daniel Borca
|
||
|
* Email : dborca@users.sourceforge.net
|
||
|
* Web : http://www.geocities.com/dborca
|
||
|
*/
|
||
|
|
||
|
|
||
|
#ifndef DMESA_H_included
|
||
|
#define DMESA_H_included
|
||
|
|
||
|
#define DMESA_MAJOR_VERSION 6
|
||
|
#define DMESA_MINOR_VERSION 5
|
||
|
|
||
|
/* Sample Usage:
|
||
|
*
|
||
|
* 1. Call DMesaCreateVisual() to initialize graphics.
|
||
|
* 2. Call DMesaCreateContext() to create a DMesa rendering context.
|
||
|
* 3. Call DMesaCreateBuffer() to define the window.
|
||
|
* 4. Call DMesaMakeCurrent() to bind the DMesaBuffer to a DMesaContext.
|
||
|
* 5. Make gl* calls to render your graphics.
|
||
|
* 6. Use DMesaSwapBuffers() when double buffering to swap front/back buffers.
|
||
|
* 7. Before exiting, destroy DMesaBuffer, DMesaContext and DMesaVisual.
|
||
|
*/
|
||
|
|
||
|
typedef struct dmesa_context *DMesaContext;
|
||
|
typedef struct dmesa_visual *DMesaVisual;
|
||
|
typedef struct dmesa_buffer *DMesaBuffer;
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
extern "C" {
|
||
|
#endif
|
||
|
|
||
|
/*
|
||
|
* Create a new Visual and set graphics mode.
|
||
|
*/
|
||
|
DMesaVisual DMesaCreateVisual (GLint width, /* X res */
|
||
|
GLint height, /* Y res */
|
||
|
GLint colDepth, /* BPP */
|
||
|
GLint refresh, /* refresh rate: 0=default */
|
||
|
GLboolean dbFlag, /* double-buffered */
|
||
|
GLboolean rgbFlag, /* RGB mode */
|
||
|
GLint alphaSize, /* requested bits/alpha */
|
||
|
GLint depthSize, /* requested bits/depth */
|
||
|
GLint stencilSize, /* requested bits/stencil */
|
||
|
GLint accumSize); /* requested bits/accum */
|
||
|
|
||
|
/*
|
||
|
* Destroy Visual and restore screen.
|
||
|
*/
|
||
|
void DMesaDestroyVisual (DMesaVisual v);
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Create a new Context for rendering.
|
||
|
*/
|
||
|
DMesaContext DMesaCreateContext (DMesaVisual visual, DMesaContext share);
|
||
|
|
||
|
/*
|
||
|
* Destroy Context.
|
||
|
*/
|
||
|
void DMesaDestroyContext (DMesaContext c);
|
||
|
|
||
|
/*
|
||
|
* Return a handle to the current context.
|
||
|
*/
|
||
|
DMesaContext DMesaGetCurrentContext (void);
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Create a new Buffer (window).
|
||
|
*/
|
||
|
DMesaBuffer DMesaCreateBuffer (DMesaVisual visual,
|
||
|
GLint xpos, GLint ypos,
|
||
|
GLint width, GLint height);
|
||
|
|
||
|
/*
|
||
|
* Destroy Buffer.
|
||
|
*/
|
||
|
void DMesaDestroyBuffer (DMesaBuffer b);
|
||
|
|
||
|
/*
|
||
|
* Return a handle to the current buffer.
|
||
|
*/
|
||
|
DMesaBuffer DMesaGetCurrentBuffer (void);
|
||
|
|
||
|
/*
|
||
|
* Swap the front and back buffers for the given Buffer.
|
||
|
* No action is taken if the buffer is not double buffered.
|
||
|
*/
|
||
|
void DMesaSwapBuffers (DMesaBuffer b);
|
||
|
|
||
|
/*
|
||
|
* Bind Buffer to Context and make the Context the current one.
|
||
|
*/
|
||
|
GLboolean DMesaMakeCurrent (DMesaContext c, DMesaBuffer b);
|
||
|
|
||
|
|
||
|
|
||
|
/*
|
||
|
* Move/Resize current Buffer.
|
||
|
*/
|
||
|
GLboolean DMesaMoveBuffer (GLint xpos, GLint ypos);
|
||
|
GLboolean DMesaResizeBuffer (GLint width, GLint height);
|
||
|
|
||
|
/*
|
||
|
* Set palette index, using normalized values.
|
||
|
*/
|
||
|
void DMesaSetCI (int ndx, GLfloat red, GLfloat green, GLfloat blue);
|
||
|
|
||
|
/*
|
||
|
* DMesa functions
|
||
|
*/
|
||
|
typedef void (*DMesaProc) ();
|
||
|
DMesaProc DMesaGetProcAddress (const char *name);
|
||
|
|
||
|
/*
|
||
|
* DMesa state retrieval.
|
||
|
*/
|
||
|
#define DMESA_GET_SCREEN_SIZE 0x0100
|
||
|
#define DMESA_GET_DRIVER_CAPS 0x0200
|
||
|
#define DMESA_GET_VIDEO_MODES 0x0300
|
||
|
#define DMESA_GET_BUFFER_ADDR 0x0400
|
||
|
|
||
|
#define DMESA_DRIVER_DBL_BIT 0x1 /* double-buffered */
|
||
|
#define DMESA_DRIVER_YUP_BIT 0x2 /* lower-left window origin */
|
||
|
int DMesaGetIntegerv (GLenum pname, GLint *params);
|
||
|
|
||
|
#ifdef __cplusplus
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
#endif
|