Convert crlf->lf line endings.
Windows/DOS users should enable core.autocrlf from now on.
This commit is contained in:
parent
2d8d472426
commit
2573f0e5d6
|
@ -1,163 +1,163 @@
|
|||
File: docs/README.WIN32
|
||||
|
||||
Last updated: Apr 25, 2007 - Karl Schultz - kschultz@users.sourceforge.net
|
||||
|
||||
Quick Start
|
||||
----- -----
|
||||
|
||||
Unzip the MesaLib, MesaGLUT, and MesaDemos ZIP files into the same
|
||||
directory. The libs and demos build separately, so if you do not care
|
||||
about the demos or GLUT, you only need to unzip MesaLib. If you unzip
|
||||
more than one ZIP file, they all need to be unzipped into the same
|
||||
directory. Don't worry, you will not overwrite anything.
|
||||
|
||||
The Windows build system uses Microsoft Visual Studio. Project files
|
||||
for a specific version of Visual Studio are in their own directory in
|
||||
the top-level "windows" directory. For example, Visual Studio 8 files
|
||||
are in windows/VC8.
|
||||
|
||||
Support has been dropped for versions of Visual Studio prior to 8. The
|
||||
main reason is because Microsoft now provides a free compiler and
|
||||
developer environment. Visual Studio Express can be found at
|
||||
|
||||
http://msdn.microsoft.com/vstudio/express/visualc/default.aspx
|
||||
|
||||
You'll also need the Platform SDK. Instructions for obtaining and
|
||||
using the SDK with Visual Studio Express can be found at
|
||||
|
||||
http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/
|
||||
|
||||
If you are stuck using VC6 or VC7, you may start with these project
|
||||
files, but you may need to modify them to reflect changes in the
|
||||
Mesa source code tree. If you sucessfully update the project files,
|
||||
please submit them to the author of this document so that they may
|
||||
be included in the next distribution.
|
||||
|
||||
The project files to build the core Mesa library, Windows Mesa
|
||||
drivers, OSMesa, and GLU are in the mesa directory. The project files
|
||||
to build GLUT and some demo programs are in the progs directory.
|
||||
|
||||
Makefiles are no longer shipped or supported, but can be generated
|
||||
from the projects using Visual Studio.
|
||||
|
||||
|
||||
Windows Drivers
|
||||
------- -------
|
||||
|
||||
At this time, only the GDI driver is known to work. Most of the demos
|
||||
in progs/demos should work with this driver.
|
||||
|
||||
Source code also exists in the tree for other drivers in
|
||||
src/mesa/drivers/windows, but the status of this code is unknown.
|
||||
|
||||
The GDI driver operates basically by writing pixel spans into a DIB
|
||||
section and then blitting the DIB to the window. The driver was
|
||||
recently cleaned up and rewitten and so may have bugs or may be
|
||||
missing some functionality. The older versions of the CVS source may
|
||||
be useful in figuring out any problems, or report them to me.
|
||||
|
||||
To build Mesa with the GDI driver, build the mesa, gdi, and glu
|
||||
projects in the Visual Studio workspace found at
|
||||
|
||||
windows/VC8/mesa/mesa.sln
|
||||
|
||||
The osmesa DLL can also be built with the osmesa project.
|
||||
|
||||
The build system creates a lib top-level directory and copies
|
||||
resulting LIB and DLL files to this lib directory. The files are:
|
||||
|
||||
OPENGL32.LIB, GLU32.LIB, OSMESA32.LIB
|
||||
OPENGL32.DLL, GLU32.DLL, OSMESA32.DLL
|
||||
|
||||
If the MesaDemos ZIP file was extracted, the DLL files are also copied
|
||||
to the demos directory. This facilitates running the demos as described
|
||||
below.
|
||||
|
||||
|
||||
GLUT and Demos
|
||||
---- --- -----
|
||||
|
||||
A Visual Studio workspace can be found at
|
||||
|
||||
windows/VC8/progs/progs.sln
|
||||
|
||||
It can be used to build GLUT and a few demos. The GLUT lib and DLL
|
||||
are copied to the top-level lib directory, along with the Mesa libs.
|
||||
|
||||
The demo build system expects to find the LIB files in the top level
|
||||
lib directory, so you must build the Mesa libs first. The demo
|
||||
executables are placed in the demos directory, because some of them
|
||||
rely on data files found there. Also, the Mesa lib DLL's were copied
|
||||
there by the Mesa lib build process. Therefore, you should be able to
|
||||
simply run the demo executables from the demo directory.
|
||||
|
||||
If you want to run the demos from the Visual Studio, you may have to
|
||||
change the startup directory and explicitly state where the executables are.
|
||||
|
||||
You may also build all the demo programs by using a makefile. Go to
|
||||
the progs/demos directory and make sure you have executed VCVARS32.BAT
|
||||
or whatever setup script is appropriate for your compiler. Then,
|
||||
|
||||
nmake -f Makefile.win
|
||||
|
||||
should build all the demos.
|
||||
|
||||
|
||||
Build System Notes
|
||||
----- ------ -----
|
||||
|
||||
VC6 (not actively supported)
|
||||
---
|
||||
|
||||
Visual Studio 6 does not recognize files with the .cc extension as C++
|
||||
language files, without a lot of unnatural tweaking. So, the VC6
|
||||
build process uses custom build steps to compile these files in the
|
||||
GLU library.
|
||||
|
||||
Two additional configurations are provided, Debug x86 and Release x86
|
||||
that activate the shader code compilation by defining SLANG_86. It is
|
||||
unknown if and how this works.
|
||||
|
||||
VC7 (not actively supported)
|
||||
---
|
||||
|
||||
The above-mentioned .cc problem does not exist in this version.
|
||||
|
||||
VC8
|
||||
---
|
||||
|
||||
No notes.
|
||||
|
||||
|
||||
General
|
||||
-------
|
||||
|
||||
After building, you can copy the above DLL files to a place in your
|
||||
PATH such as $SystemRoot/SYSTEM32. If you don't like putting things
|
||||
in a system directory, place them in the same directory as the
|
||||
executable(s). Be careful about accidentially overwriting files of
|
||||
the same name in the SYSTEM32 directory.
|
||||
|
||||
The DLL files are built so that the external entry points use the
|
||||
stdcall calling convention.
|
||||
|
||||
Static LIB files are not built. The LIB files that are built with are
|
||||
the linker import files associated with the DLL files.
|
||||
|
||||
The si-glu sources are used to build the GLU libs. This was done
|
||||
mainly to get the better tessellator code.
|
||||
|
||||
To build "mangled" Mesa, add the preprocessor define USE_MGL_NAMESPACE
|
||||
to the project settings. You will also need to edit src/mesa.def to
|
||||
change all the gl* symbols to mgl*. Because this is easy to do with a
|
||||
global replace operation in a text editor, no additional mangled
|
||||
version of mesa.def is maintained or shipped.
|
||||
|
||||
If you have a Windows-related build problem or question, it is
|
||||
probably better to direct it to me (kschultz@users.sourceforge.net),
|
||||
rather than directly to the other Mesa developers. I will help you as
|
||||
much as I can. I also monitor the Mesa mailing lists and will answer
|
||||
questions in this area there as well.
|
||||
|
||||
|
||||
Karl Schultz
|
||||
File: docs/README.WIN32
|
||||
|
||||
Last updated: Apr 25, 2007 - Karl Schultz - kschultz@users.sourceforge.net
|
||||
|
||||
Quick Start
|
||||
----- -----
|
||||
|
||||
Unzip the MesaLib, MesaGLUT, and MesaDemos ZIP files into the same
|
||||
directory. The libs and demos build separately, so if you do not care
|
||||
about the demos or GLUT, you only need to unzip MesaLib. If you unzip
|
||||
more than one ZIP file, they all need to be unzipped into the same
|
||||
directory. Don't worry, you will not overwrite anything.
|
||||
|
||||
The Windows build system uses Microsoft Visual Studio. Project files
|
||||
for a specific version of Visual Studio are in their own directory in
|
||||
the top-level "windows" directory. For example, Visual Studio 8 files
|
||||
are in windows/VC8.
|
||||
|
||||
Support has been dropped for versions of Visual Studio prior to 8. The
|
||||
main reason is because Microsoft now provides a free compiler and
|
||||
developer environment. Visual Studio Express can be found at
|
||||
|
||||
http://msdn.microsoft.com/vstudio/express/visualc/default.aspx
|
||||
|
||||
You'll also need the Platform SDK. Instructions for obtaining and
|
||||
using the SDK with Visual Studio Express can be found at
|
||||
|
||||
http://msdn.microsoft.com/vstudio/express/visualc/usingpsdk/
|
||||
|
||||
If you are stuck using VC6 or VC7, you may start with these project
|
||||
files, but you may need to modify them to reflect changes in the
|
||||
Mesa source code tree. If you sucessfully update the project files,
|
||||
please submit them to the author of this document so that they may
|
||||
be included in the next distribution.
|
||||
|
||||
The project files to build the core Mesa library, Windows Mesa
|
||||
drivers, OSMesa, and GLU are in the mesa directory. The project files
|
||||
to build GLUT and some demo programs are in the progs directory.
|
||||
|
||||
Makefiles are no longer shipped or supported, but can be generated
|
||||
from the projects using Visual Studio.
|
||||
|
||||
|
||||
Windows Drivers
|
||||
------- -------
|
||||
|
||||
At this time, only the GDI driver is known to work. Most of the demos
|
||||
in progs/demos should work with this driver.
|
||||
|
||||
Source code also exists in the tree for other drivers in
|
||||
src/mesa/drivers/windows, but the status of this code is unknown.
|
||||
|
||||
The GDI driver operates basically by writing pixel spans into a DIB
|
||||
section and then blitting the DIB to the window. The driver was
|
||||
recently cleaned up and rewitten and so may have bugs or may be
|
||||
missing some functionality. The older versions of the CVS source may
|
||||
be useful in figuring out any problems, or report them to me.
|
||||
|
||||
To build Mesa with the GDI driver, build the mesa, gdi, and glu
|
||||
projects in the Visual Studio workspace found at
|
||||
|
||||
windows/VC8/mesa/mesa.sln
|
||||
|
||||
The osmesa DLL can also be built with the osmesa project.
|
||||
|
||||
The build system creates a lib top-level directory and copies
|
||||
resulting LIB and DLL files to this lib directory. The files are:
|
||||
|
||||
OPENGL32.LIB, GLU32.LIB, OSMESA32.LIB
|
||||
OPENGL32.DLL, GLU32.DLL, OSMESA32.DLL
|
||||
|
||||
If the MesaDemos ZIP file was extracted, the DLL files are also copied
|
||||
to the demos directory. This facilitates running the demos as described
|
||||
below.
|
||||
|
||||
|
||||
GLUT and Demos
|
||||
---- --- -----
|
||||
|
||||
A Visual Studio workspace can be found at
|
||||
|
||||
windows/VC8/progs/progs.sln
|
||||
|
||||
It can be used to build GLUT and a few demos. The GLUT lib and DLL
|
||||
are copied to the top-level lib directory, along with the Mesa libs.
|
||||
|
||||
The demo build system expects to find the LIB files in the top level
|
||||
lib directory, so you must build the Mesa libs first. The demo
|
||||
executables are placed in the demos directory, because some of them
|
||||
rely on data files found there. Also, the Mesa lib DLL's were copied
|
||||
there by the Mesa lib build process. Therefore, you should be able to
|
||||
simply run the demo executables from the demo directory.
|
||||
|
||||
If you want to run the demos from the Visual Studio, you may have to
|
||||
change the startup directory and explicitly state where the executables are.
|
||||
|
||||
You may also build all the demo programs by using a makefile. Go to
|
||||
the progs/demos directory and make sure you have executed VCVARS32.BAT
|
||||
or whatever setup script is appropriate for your compiler. Then,
|
||||
|
||||
nmake -f Makefile.win
|
||||
|
||||
should build all the demos.
|
||||
|
||||
|
||||
Build System Notes
|
||||
----- ------ -----
|
||||
|
||||
VC6 (not actively supported)
|
||||
---
|
||||
|
||||
Visual Studio 6 does not recognize files with the .cc extension as C++
|
||||
language files, without a lot of unnatural tweaking. So, the VC6
|
||||
build process uses custom build steps to compile these files in the
|
||||
GLU library.
|
||||
|
||||
Two additional configurations are provided, Debug x86 and Release x86
|
||||
that activate the shader code compilation by defining SLANG_86. It is
|
||||
unknown if and how this works.
|
||||
|
||||
VC7 (not actively supported)
|
||||
---
|
||||
|
||||
The above-mentioned .cc problem does not exist in this version.
|
||||
|
||||
VC8
|
||||
---
|
||||
|
||||
No notes.
|
||||
|
||||
|
||||
General
|
||||
-------
|
||||
|
||||
After building, you can copy the above DLL files to a place in your
|
||||
PATH such as $SystemRoot/SYSTEM32. If you don't like putting things
|
||||
in a system directory, place them in the same directory as the
|
||||
executable(s). Be careful about accidentially overwriting files of
|
||||
the same name in the SYSTEM32 directory.
|
||||
|
||||
The DLL files are built so that the external entry points use the
|
||||
stdcall calling convention.
|
||||
|
||||
Static LIB files are not built. The LIB files that are built with are
|
||||
the linker import files associated with the DLL files.
|
||||
|
||||
The si-glu sources are used to build the GLU libs. This was done
|
||||
mainly to get the better tessellator code.
|
||||
|
||||
To build "mangled" Mesa, add the preprocessor define USE_MGL_NAMESPACE
|
||||
to the project settings. You will also need to edit src/mesa.def to
|
||||
change all the gl* symbols to mgl*. Because this is easy to do with a
|
||||
global replace operation in a text editor, no additional mangled
|
||||
version of mesa.def is maintained or shipped.
|
||||
|
||||
If you have a Windows-related build problem or question, it is
|
||||
probably better to direct it to me (kschultz@users.sourceforge.net),
|
||||
rather than directly to the other Mesa developers. I will help you as
|
||||
much as I can. I also monitor the Mesa mailing lists and will answer
|
||||
questions in this area there as well.
|
||||
|
||||
|
||||
Karl Schultz
|
||||
|
|
|
@ -1,33 +1,33 @@
|
|||
|
||||
default: full
|
||||
|
||||
all: full subset
|
||||
|
||||
%.tag: %.doxy
|
||||
doxygen $<
|
||||
|
||||
FULL = \
|
||||
main.doxy \
|
||||
math.doxy \
|
||||
vbo.doxy \
|
||||
glapi.doxy \
|
||||
shader.doxy \
|
||||
swrast.doxy \
|
||||
swrast_setup.doxy \
|
||||
tnl.doxy \
|
||||
tnl_dd.doxy
|
||||
|
||||
full: $(FULL:.doxy=.tag)
|
||||
$(foreach FILE,$(FULL),doxygen $(FILE);)
|
||||
|
||||
SUBSET = \
|
||||
main.doxy \
|
||||
math.doxy \
|
||||
miniglx.doxy
|
||||
|
||||
subset: $(SUBSET:.doxy=.tag)
|
||||
$(foreach FILE,$(SUBSET),doxygen $(FILE);)
|
||||
|
||||
clean:
|
||||
rm -rf $(FULL:.doxy=) $(SUBSET:.doxy=)
|
||||
rm -rf *.tag
|
||||
|
||||
default: full
|
||||
|
||||
all: full subset
|
||||
|
||||
%.tag: %.doxy
|
||||
doxygen $<
|
||||
|
||||
FULL = \
|
||||
main.doxy \
|
||||
math.doxy \
|
||||
vbo.doxy \
|
||||
glapi.doxy \
|
||||
shader.doxy \
|
||||
swrast.doxy \
|
||||
swrast_setup.doxy \
|
||||
tnl.doxy \
|
||||
tnl_dd.doxy
|
||||
|
||||
full: $(FULL:.doxy=.tag)
|
||||
$(foreach FILE,$(FULL),doxygen $(FILE);)
|
||||
|
||||
SUBSET = \
|
||||
main.doxy \
|
||||
math.doxy \
|
||||
miniglx.doxy
|
||||
|
||||
subset: $(SUBSET:.doxy=.tag)
|
||||
$(foreach FILE,$(SUBSET),doxygen $(FILE);)
|
||||
|
||||
clean:
|
||||
rm -rf $(FULL:.doxy=) $(SUBSET:.doxy=)
|
||||
rm -rf *.tag
|
||||
|
|
|
@ -1,19 +1,19 @@
|
|||
doxygen tnl_dd.doxy
|
||||
doxygen vbo.doxy
|
||||
doxygen math.doxy
|
||||
doxygen swrast.doxy
|
||||
doxygen swrast_setup.doxy
|
||||
doxygen tnl.doxy
|
||||
doxygen core.doxy
|
||||
doxygen glapi.doxy
|
||||
doxygen shader.doxy
|
||||
|
||||
echo Building again, to resolve tags
|
||||
doxygen tnl_dd.doxy
|
||||
doxygen vbo.doxy
|
||||
doxygen math.doxy
|
||||
doxygen swrast.doxy
|
||||
doxygen swrast_setup.doxy
|
||||
doxygen tnl.doxy
|
||||
doxygen glapi.doxy
|
||||
doxygen shader.doxy
|
||||
doxygen tnl_dd.doxy
|
||||
doxygen vbo.doxy
|
||||
doxygen math.doxy
|
||||
doxygen swrast.doxy
|
||||
doxygen swrast_setup.doxy
|
||||
doxygen tnl.doxy
|
||||
doxygen core.doxy
|
||||
doxygen glapi.doxy
|
||||
doxygen shader.doxy
|
||||
|
||||
echo Building again, to resolve tags
|
||||
doxygen tnl_dd.doxy
|
||||
doxygen vbo.doxy
|
||||
doxygen math.doxy
|
||||
doxygen swrast.doxy
|
||||
doxygen swrast_setup.doxy
|
||||
doxygen tnl.doxy
|
||||
doxygen glapi.doxy
|
||||
doxygen shader.doxy
|
||||
|
|
|
@ -1,79 +1,79 @@
|
|||
/****************************************************************************
|
||||
*
|
||||
* Mesa bindings for SciTech MGL
|
||||
*
|
||||
* Copyright (C) 1996 SciTech Software.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Filename: mglmesa.h
|
||||
* Version: Revision: 1.1.1.1
|
||||
*
|
||||
* Language: ANSI C
|
||||
* Environment: Any
|
||||
*
|
||||
* Description: Header file for the Mesa/OpenGL interface bindings for the
|
||||
* SciTech MGL graphics library. Uses the MGL internal
|
||||
* device context structures to get direct access to the
|
||||
* high performance MGL rasterization functions for maximum
|
||||
* performance. Utilizes the VESA VBE/AF Accelerator Functions
|
||||
* via the MGL's accelerated device driver functions, as well
|
||||
* as basic DirectDraw accelerated functions provided by the
|
||||
* MGL.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with this library; if not, write to the Free
|
||||
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __MGLMESA_H
|
||||
#define __MGLMESA_H
|
||||
|
||||
#include "mgraph.h"
|
||||
|
||||
/*------------------------- Function Prototypes ---------------------------*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" { /* Use "C" linkage when in C++ mode */
|
||||
#endif
|
||||
|
||||
#ifndef __WINDOWS__
|
||||
#define GLAPIENTRY
|
||||
#endif
|
||||
|
||||
#ifdef __WINDOWS__
|
||||
bool GLAPIENTRY MGLMesaInitDLL(MGLCallbacks *cb,char *version);
|
||||
#endif
|
||||
void GLAPIENTRY MGLMesaChooseVisual(MGLDC *dc,MGLVisual *visual);
|
||||
bool GLAPIENTRY MGLMesaSetVisual(MGLDC *dc,MGLVisual *visual);
|
||||
bool GLAPIENTRY MGLMesaCreateContext(MGLDC *dc,bool forceMemDC);
|
||||
void GLAPIENTRY MGLMesaDestroyContext(MGLDC *dc);
|
||||
void GLAPIENTRY MGLMesaMakeCurrent(MGLDC *dc);
|
||||
void GLAPIENTRY MGLMesaSwapBuffers(MGLDC *dc,bool waitVRT);
|
||||
|
||||
/* Palette manipulation support. The reason we provide palette manipulation
|
||||
* routines is so that when rendering in double buffered modes with a
|
||||
* software backbuffer, the palette for the backbuffer is kept consistent
|
||||
* with the hardware front buffer.
|
||||
*/
|
||||
|
||||
void GLAPIENTRY MGLMesaSetPaletteEntry(MGLDC *dc,int entry,uchar red,uchar green,uchar blue);
|
||||
void GLAPIENTRY MGLMesaSetPalette(MGLDC *dc,palette_t *pal,int numColors,int startIndex);
|
||||
void GLAPIENTRY MGLMesaRealizePalette(MGLDC *dc,int numColors,int startIndex,int waitVRT);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* End of "C" linkage for C++ */
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* __MGLMESA_H */
|
||||
/****************************************************************************
|
||||
*
|
||||
* Mesa bindings for SciTech MGL
|
||||
*
|
||||
* Copyright (C) 1996 SciTech Software.
|
||||
* All rights reserved.
|
||||
*
|
||||
* Filename: mglmesa.h
|
||||
* Version: Revision: 1.1.1.1
|
||||
*
|
||||
* Language: ANSI C
|
||||
* Environment: Any
|
||||
*
|
||||
* Description: Header file for the Mesa/OpenGL interface bindings for the
|
||||
* SciTech MGL graphics library. Uses the MGL internal
|
||||
* device context structures to get direct access to the
|
||||
* high performance MGL rasterization functions for maximum
|
||||
* performance. Utilizes the VESA VBE/AF Accelerator Functions
|
||||
* via the MGL's accelerated device driver functions, as well
|
||||
* as basic DirectDraw accelerated functions provided by the
|
||||
* MGL.
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with this library; if not, write to the Free
|
||||
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*
|
||||
*
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef __MGLMESA_H
|
||||
#define __MGLMESA_H
|
||||
|
||||
#include "mgraph.h"
|
||||
|
||||
/*------------------------- Function Prototypes ---------------------------*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" { /* Use "C" linkage when in C++ mode */
|
||||
#endif
|
||||
|
||||
#ifndef __WINDOWS__
|
||||
#define GLAPIENTRY
|
||||
#endif
|
||||
|
||||
#ifdef __WINDOWS__
|
||||
bool GLAPIENTRY MGLMesaInitDLL(MGLCallbacks *cb,char *version);
|
||||
#endif
|
||||
void GLAPIENTRY MGLMesaChooseVisual(MGLDC *dc,MGLVisual *visual);
|
||||
bool GLAPIENTRY MGLMesaSetVisual(MGLDC *dc,MGLVisual *visual);
|
||||
bool GLAPIENTRY MGLMesaCreateContext(MGLDC *dc,bool forceMemDC);
|
||||
void GLAPIENTRY MGLMesaDestroyContext(MGLDC *dc);
|
||||
void GLAPIENTRY MGLMesaMakeCurrent(MGLDC *dc);
|
||||
void GLAPIENTRY MGLMesaSwapBuffers(MGLDC *dc,bool waitVRT);
|
||||
|
||||
/* Palette manipulation support. The reason we provide palette manipulation
|
||||
* routines is so that when rendering in double buffered modes with a
|
||||
* software backbuffer, the palette for the backbuffer is kept consistent
|
||||
* with the hardware front buffer.
|
||||
*/
|
||||
|
||||
void GLAPIENTRY MGLMesaSetPaletteEntry(MGLDC *dc,int entry,uchar red,uchar green,uchar blue);
|
||||
void GLAPIENTRY MGLMesaSetPalette(MGLDC *dc,palette_t *pal,int numColors,int startIndex);
|
||||
void GLAPIENTRY MGLMesaRealizePalette(MGLDC *dc,int numColors,int startIndex,int waitVRT);
|
||||
|
||||
#ifdef __cplusplus
|
||||
} /* End of "C" linkage for C++ */
|
||||
#endif /* __cplusplus */
|
||||
|
||||
#endif /* __MGLMESA_H */
|
||||
|
|
|
@ -1,119 +1,119 @@
|
|||
BACKGROUND = 0.000 0.500 0.700
|
||||
|
||||
ANAME = AXLE1
|
||||
ARADIUS = 1.000
|
||||
AAXIS = 2
|
||||
APOSITION = -7.000 0.000 0.000
|
||||
ACOLOR = 0.800 0.500 0.200
|
||||
ALENGTH = 6.000
|
||||
AMOTORED = 1
|
||||
AANGULARVELOCITY = 90.000
|
||||
ADIRECTION = 1
|
||||
|
||||
ANAME = AXLE2
|
||||
ARADIUS = 1.000
|
||||
AAXIS = 2
|
||||
APOSITION = -3.000 0.000 0.000
|
||||
ACOLOR = 0.800 0.500 0.200
|
||||
ALENGTH = 12.000
|
||||
AMOTORED = 0
|
||||
|
||||
ANAME = AXLE3
|
||||
ARADIUS = 1.000
|
||||
AAXIS = 2
|
||||
APOSITION = 1.000 0.000 0.000
|
||||
ACOLOR = 0.800 0.500 0.200
|
||||
ALENGTH = 6.000
|
||||
AMOTORED = 0
|
||||
|
||||
ANAME = AXLE4
|
||||
ARADIUS = 1.000
|
||||
AAXIS = 2
|
||||
APOSITION = 8.000 0.000 0.000
|
||||
ACOLOR = 0.800 0.500 0.200
|
||||
ALENGTH = 18.000
|
||||
AMOTORED = 0
|
||||
|
||||
ANAME = AXLE5
|
||||
ARADIUS = 1.000
|
||||
AAXIS = 1
|
||||
APOSITION = 8.000 -8.200 -7.400
|
||||
ACOLOR = 0.800 0.500 0.200
|
||||
ALENGTH = 12.000
|
||||
AMOTORED = 0
|
||||
|
||||
GNAME = GEAR1
|
||||
GTYPE = NORMAL
|
||||
GRADIUS = 2.200
|
||||
GWIDTH = 3.000
|
||||
GTEETH = 40
|
||||
GTOOTHDEPTH = 0.500
|
||||
GCOLOR = 0.500 0.500 0.500
|
||||
GAXLE = AXLE1
|
||||
GPOSITION = 0.000
|
||||
|
||||
GNAME = GEAR2
|
||||
GTYPE = NORMAL
|
||||
GRADIUS = 2.200
|
||||
GWIDTH = 3.000
|
||||
GTEETH = 30
|
||||
GTOOTHDEPTH = 0.500
|
||||
GCOLOR = 0.500 0.500 0.500
|
||||
GAXLE = AXLE2
|
||||
GPOSITION = 0.000
|
||||
|
||||
GNAME = GEAR3
|
||||
GTYPE = NORMAL
|
||||
GRADIUS = 2.200
|
||||
GWIDTH = 3.000
|
||||
GTEETH = 20
|
||||
GTOOTHDEPTH = 0.500
|
||||
GCOLOR = 0.500 0.500 0.500
|
||||
GAXLE = AXLE3
|
||||
GPOSITION = 0.000
|
||||
|
||||
GNAME = GEAR4
|
||||
GTYPE = NORMAL
|
||||
GRADIUS = 1.700
|
||||
GWIDTH = 1.000
|
||||
GTEETH = 20
|
||||
GTOOTHDEPTH = 0.500
|
||||
GCOLOR = 0.500 0.500 0.500
|
||||
GAXLE = AXLE2
|
||||
GPOSITION = 5.000
|
||||
|
||||
GNAME = GEAR5
|
||||
GTYPE = NORMAL
|
||||
GRADIUS = 3.000
|
||||
GWIDTH = 1.000
|
||||
GTEETH = 20
|
||||
GTOOTHDEPTH = 0.500
|
||||
GCOLOR = 0.500 0.500 0.500
|
||||
GAXLE = AXLE4
|
||||
GPOSITION = 5.000
|
||||
|
||||
GNAME = GEAR6
|
||||
GTYPE = BEVEL
|
||||
GFACE = 0
|
||||
GRADIUS = 4.000
|
||||
GWIDTH = 1.000
|
||||
GTEETH = 20
|
||||
GTOOTHDEPTH = 1.700
|
||||
GCOLOR = 0.500 0.500 0.500
|
||||
GAXLE = AXLE4
|
||||
GPOSITION = -4.000
|
||||
|
||||
GNAME = GEAR7
|
||||
GTYPE = BEVEL
|
||||
GFACE = 0
|
||||
GRADIUS = 4.000
|
||||
GWIDTH = 1.000
|
||||
GTEETH = 20
|
||||
GTOOTHDEPTH = 1.700
|
||||
GCOLOR = 0.500 0.500 0.500
|
||||
GAXLE = AXLE5
|
||||
GPOSITION = 5.000
|
||||
|
||||
BELTNAME = BELT1
|
||||
GEAR1NAME = GEAR5
|
||||
GEAR2NAME = GEAR4
|
||||
BACKGROUND = 0.000 0.500 0.700
|
||||
|
||||
ANAME = AXLE1
|
||||
ARADIUS = 1.000
|
||||
AAXIS = 2
|
||||
APOSITION = -7.000 0.000 0.000
|
||||
ACOLOR = 0.800 0.500 0.200
|
||||
ALENGTH = 6.000
|
||||
AMOTORED = 1
|
||||
AANGULARVELOCITY = 90.000
|
||||
ADIRECTION = 1
|
||||
|
||||
ANAME = AXLE2
|
||||
ARADIUS = 1.000
|
||||
AAXIS = 2
|
||||
APOSITION = -3.000 0.000 0.000
|
||||
ACOLOR = 0.800 0.500 0.200
|
||||
ALENGTH = 12.000
|
||||
AMOTORED = 0
|
||||
|
||||
ANAME = AXLE3
|
||||
ARADIUS = 1.000
|
||||
AAXIS = 2
|
||||
APOSITION = 1.000 0.000 0.000
|
||||
ACOLOR = 0.800 0.500 0.200
|
||||
ALENGTH = 6.000
|
||||
AMOTORED = 0
|
||||
|
||||
ANAME = AXLE4
|
||||
ARADIUS = 1.000
|
||||
AAXIS = 2
|
||||
APOSITION = 8.000 0.000 0.000
|
||||
ACOLOR = 0.800 0.500 0.200
|
||||
ALENGTH = 18.000
|
||||
AMOTORED = 0
|
||||
|
||||
ANAME = AXLE5
|
||||
ARADIUS = 1.000
|
||||
AAXIS = 1
|
||||
APOSITION = 8.000 -8.200 -7.400
|
||||
ACOLOR = 0.800 0.500 0.200
|
||||
ALENGTH = 12.000
|
||||
AMOTORED = 0
|
||||
|
||||
GNAME = GEAR1
|
||||
GTYPE = NORMAL
|
||||
GRADIUS = 2.200
|
||||
GWIDTH = 3.000
|
||||
GTEETH = 40
|
||||
GTOOTHDEPTH = 0.500
|
||||
GCOLOR = 0.500 0.500 0.500
|
||||
GAXLE = AXLE1
|
||||
GPOSITION = 0.000
|
||||
|
||||
GNAME = GEAR2
|
||||
GTYPE = NORMAL
|
||||
GRADIUS = 2.200
|
||||
GWIDTH = 3.000
|
||||
GTEETH = 30
|
||||
GTOOTHDEPTH = 0.500
|
||||
GCOLOR = 0.500 0.500 0.500
|
||||
GAXLE = AXLE2
|
||||
GPOSITION = 0.000
|
||||
|
||||
GNAME = GEAR3
|
||||
GTYPE = NORMAL
|
||||
GRADIUS = 2.200
|
||||
GWIDTH = 3.000
|
||||
GTEETH = 20
|
||||
GTOOTHDEPTH = 0.500
|
||||
GCOLOR = 0.500 0.500 0.500
|
||||
GAXLE = AXLE3
|
||||
GPOSITION = 0.000
|
||||
|
||||
GNAME = GEAR4
|
||||
GTYPE = NORMAL
|
||||
GRADIUS = 1.700
|
||||
GWIDTH = 1.000
|
||||
GTEETH = 20
|
||||
GTOOTHDEPTH = 0.500
|
||||
GCOLOR = 0.500 0.500 0.500
|
||||
GAXLE = AXLE2
|
||||
GPOSITION = 5.000
|
||||
|
||||
GNAME = GEAR5
|
||||
GTYPE = NORMAL
|
||||
GRADIUS = 3.000
|
||||
GWIDTH = 1.000
|
||||
GTEETH = 20
|
||||
GTOOTHDEPTH = 0.500
|
||||
GCOLOR = 0.500 0.500 0.500
|
||||
GAXLE = AXLE4
|
||||
GPOSITION = 5.000
|
||||
|
||||
GNAME = GEAR6
|
||||
GTYPE = BEVEL
|
||||
GFACE = 0
|
||||
GRADIUS = 4.000
|
||||
GWIDTH = 1.000
|
||||
GTEETH = 20
|
||||
GTOOTHDEPTH = 1.700
|
||||
GCOLOR = 0.500 0.500 0.500
|
||||
GAXLE = AXLE4
|
||||
GPOSITION = -4.000
|
||||
|
||||
GNAME = GEAR7
|
||||
GTYPE = BEVEL
|
||||
GFACE = 0
|
||||
GRADIUS = 4.000
|
||||
GWIDTH = 1.000
|
||||
GTEETH = 20
|
||||
GTOOTHDEPTH = 1.700
|
||||
GCOLOR = 0.500 0.500 0.500
|
||||
GAXLE = AXLE5
|
||||
GPOSITION = 5.000
|
||||
|
||||
BELTNAME = BELT1
|
||||
GEAR1NAME = GEAR5
|
||||
GEAR2NAME = GEAR4
|
||||
|
|
|
@ -1,132 +1,132 @@
|
|||
Ambient light color: Red=0.039216 Green=0.039216 Blue=0.039216
|
||||
|
||||
Named object: "Object01"
|
||||
Tri-mesh, Vertices: 20 Faces: 36
|
||||
Vertex list:
|
||||
Vertex 0: X: -210 Y: -432.781738 Z: 180.000031
|
||||
Vertex 1: X: -610.810303 Y: 144.260559 Z: 103.580154
|
||||
Vertex 2: X: 56.586655 Y: 144.260544 Z: -128.902023
|
||||
Vertex 3: X: -75.776352 Y: 144.260605 Z: 565.321838
|
||||
Vertex 4: X: -462.815979 Y: -347.937683 Z: 131.797302
|
||||
Vertex 5: X: -616.506042 Y: -126.67173 Z: 102.494209
|
||||
Vertex 6: X: -41.847229 Y: -347.937683 Z: -14.843644
|
||||
Vertex 7: X: 60.375015 Y: -126.671753 Z: -133.291641
|
||||
Vertex 8: X: -125.336807 Y: -347.937653 Z: 423.046448
|
||||
Vertex 9: X: -73.868958 Y: -126.671692 Z: 570.797424
|
||||
Vertex 10: X: -448.353271 Y: 237.304672 Z: -92.34951
|
||||
Vertex 11: X: -192.440964 Y: 237.304672 Z: -181.494431
|
||||
Vertex 12: X: 145.038193 Y: 237.304672 Z: 109.754745
|
||||
Vertex 13: X: 94.283768 Y: 237.304688 Z: 375.953766
|
||||
Vertex 14: X: -326.684937 Y: 237.304733 Z: 522.594727
|
||||
Vertex 15: X: -531.842834 Y: 237.304718 Z: 345.540588
|
||||
Vertex 16: X: -331.419525 Y: -225.964966 Z: -168.564438
|
||||
Vertex 17: X: 152.575485 Y: -225.964935 Z: 249.129868
|
||||
Vertex 18: X: -451.155914 Y: -225.964905 Z: 459.434662
|
||||
Vertex 19: X: -298.413483 Y: 423.31897 Z: 163.142761
|
||||
Face list:
|
||||
Face 0: A:0 B:4 C:6 AB:1 BC:1 CA:1
|
||||
Face 1: A:4 B:5 C:16 AB:1 BC:1 CA:1
|
||||
Face 2: A:4 B:16 C:6 AB:1 BC:1 CA:1
|
||||
Face 3: A:6 B:16 C:7 AB:1 BC:1 CA:1
|
||||
Face 4: A:5 B:1 C:10 AB:1 BC:1 CA:1
|
||||
Face 5: A:5 B:10 C:16 AB:1 BC:1 CA:1
|
||||
Face 6: A:16 B:10 C:11 AB:1 BC:1 CA:1
|
||||
Face 7: A:16 B:11 C:7 AB:1 BC:1 CA:1
|
||||
Face 8: A:7 B:11 C:2 AB:1 BC:1 CA:1
|
||||
Face 9: A:0 B:6 C:8 AB:1 BC:1 CA:1
|
||||
Face 10: A:6 B:7 C:17 AB:1 BC:1 CA:1
|
||||
Face 11: A:6 B:17 C:8 AB:1 BC:1 CA:1
|
||||
Face 12: A:8 B:17 C:9 AB:1 BC:1 CA:1
|
||||
Face 13: A:7 B:2 C:12 AB:1 BC:1 CA:1
|
||||
Face 14: A:7 B:12 C:17 AB:1 BC:1 CA:1
|
||||
Face 15: A:17 B:12 C:13 AB:1 BC:1 CA:1
|
||||
Face 16: A:17 B:13 C:9 AB:1 BC:1 CA:1
|
||||
Face 17: A:9 B:13 C:3 AB:1 BC:1 CA:1
|
||||
Face 18: A:0 B:8 C:4 AB:1 BC:1 CA:1
|
||||
Face 19: A:8 B:9 C:18 AB:1 BC:1 CA:1
|
||||
Face 20: A:8 B:18 C:4 AB:1 BC:1 CA:1
|
||||
Face 21: A:4 B:18 C:5 AB:1 BC:1 CA:1
|
||||
Face 22: A:9 B:3 C:14 AB:1 BC:1 CA:1
|
||||
Face 23: A:9 B:14 C:18 AB:1 BC:1 CA:1
|
||||
Face 24: A:18 B:14 C:15 AB:1 BC:1 CA:1
|
||||
Face 25: A:18 B:15 C:5 AB:1 BC:1 CA:1
|
||||
Face 26: A:5 B:15 C:1 AB:1 BC:1 CA:1
|
||||
Face 27: A:1 B:15 C:10 AB:1 BC:1 CA:1
|
||||
Face 28: A:15 B:14 C:19 AB:1 BC:1 CA:1
|
||||
Face 29: A:15 B:19 C:10 AB:1 BC:1 CA:1
|
||||
Face 30: A:10 B:19 C:11 AB:1 BC:1 CA:1
|
||||
Face 31: A:14 B:3 C:13 AB:1 BC:1 CA:1
|
||||
Face 32: A:14 B:13 C:19 AB:1 BC:1 CA:1
|
||||
Face 33: A:19 B:13 C:12 AB:1 BC:1 CA:1
|
||||
Face 34: A:19 B:12 C:11 AB:1 BC:1 CA:1
|
||||
|
||||
Page 1
|
||||
|
||||
|
||||
|
||||
Face 35: A:11 B:12 C:2 AB:1 BC:1 CA:1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Page 2
|
||||
|
||||
|
||||
|
||||
Ambient light color: Red=0.039216 Green=0.039216 Blue=0.039216
|
||||
|
||||
Named object: "Object01"
|
||||
Tri-mesh, Vertices: 20 Faces: 36
|
||||
Vertex list:
|
||||
Vertex 0: X: -210 Y: -432.781738 Z: 180.000031
|
||||
Vertex 1: X: -610.810303 Y: 144.260559 Z: 103.580154
|
||||
Vertex 2: X: 56.586655 Y: 144.260544 Z: -128.902023
|
||||
Vertex 3: X: -75.776352 Y: 144.260605 Z: 565.321838
|
||||
Vertex 4: X: -462.815979 Y: -347.937683 Z: 131.797302
|
||||
Vertex 5: X: -616.506042 Y: -126.67173 Z: 102.494209
|
||||
Vertex 6: X: -41.847229 Y: -347.937683 Z: -14.843644
|
||||
Vertex 7: X: 60.375015 Y: -126.671753 Z: -133.291641
|
||||
Vertex 8: X: -125.336807 Y: -347.937653 Z: 423.046448
|
||||
Vertex 9: X: -73.868958 Y: -126.671692 Z: 570.797424
|
||||
Vertex 10: X: -448.353271 Y: 237.304672 Z: -92.34951
|
||||
Vertex 11: X: -192.440964 Y: 237.304672 Z: -181.494431
|
||||
Vertex 12: X: 145.038193 Y: 237.304672 Z: 109.754745
|
||||
Vertex 13: X: 94.283768 Y: 237.304688 Z: 375.953766
|
||||
Vertex 14: X: -326.684937 Y: 237.304733 Z: 522.594727
|
||||
Vertex 15: X: -531.842834 Y: 237.304718 Z: 345.540588
|
||||
Vertex 16: X: -331.419525 Y: -225.964966 Z: -168.564438
|
||||
Vertex 17: X: 152.575485 Y: -225.964935 Z: 249.129868
|
||||
Vertex 18: X: -451.155914 Y: -225.964905 Z: 459.434662
|
||||
Vertex 19: X: -298.413483 Y: 423.31897 Z: 163.142761
|
||||
Face list:
|
||||
Face 0: A:0 B:4 C:6 AB:1 BC:1 CA:1
|
||||
Face 1: A:4 B:5 C:16 AB:1 BC:1 CA:1
|
||||
Face 2: A:4 B:16 C:6 AB:1 BC:1 CA:1
|
||||
Face 3: A:6 B:16 C:7 AB:1 BC:1 CA:1
|
||||
Face 4: A:5 B:1 C:10 AB:1 BC:1 CA:1
|
||||
Face 5: A:5 B:10 C:16 AB:1 BC:1 CA:1
|
||||
Face 6: A:16 B:10 C:11 AB:1 BC:1 CA:1
|
||||
Face 7: A:16 B:11 C:7 AB:1 BC:1 CA:1
|
||||
Face 8: A:7 B:11 C:2 AB:1 BC:1 CA:1
|
||||
Face 9: A:0 B:6 C:8 AB:1 BC:1 CA:1
|
||||
Face 10: A:6 B:7 C:17 AB:1 BC:1 CA:1
|
||||
Face 11: A:6 B:17 C:8 AB:1 BC:1 CA:1
|
||||
Face 12: A:8 B:17 C:9 AB:1 BC:1 CA:1
|
||||
Face 13: A:7 B:2 C:12 AB:1 BC:1 CA:1
|
||||
Face 14: A:7 B:12 C:17 AB:1 BC:1 CA:1
|
||||
Face 15: A:17 B:12 C:13 AB:1 BC:1 CA:1
|
||||
Face 16: A:17 B:13 C:9 AB:1 BC:1 CA:1
|
||||
Face 17: A:9 B:13 C:3 AB:1 BC:1 CA:1
|
||||
Face 18: A:0 B:8 C:4 AB:1 BC:1 CA:1
|
||||
Face 19: A:8 B:9 C:18 AB:1 BC:1 CA:1
|
||||
Face 20: A:8 B:18 C:4 AB:1 BC:1 CA:1
|
||||
Face 21: A:4 B:18 C:5 AB:1 BC:1 CA:1
|
||||
Face 22: A:9 B:3 C:14 AB:1 BC:1 CA:1
|
||||
Face 23: A:9 B:14 C:18 AB:1 BC:1 CA:1
|
||||
Face 24: A:18 B:14 C:15 AB:1 BC:1 CA:1
|
||||
Face 25: A:18 B:15 C:5 AB:1 BC:1 CA:1
|
||||
Face 26: A:5 B:15 C:1 AB:1 BC:1 CA:1
|
||||
Face 27: A:1 B:15 C:10 AB:1 BC:1 CA:1
|
||||
Face 28: A:15 B:14 C:19 AB:1 BC:1 CA:1
|
||||
Face 29: A:15 B:19 C:10 AB:1 BC:1 CA:1
|
||||
Face 30: A:10 B:19 C:11 AB:1 BC:1 CA:1
|
||||
Face 31: A:14 B:3 C:13 AB:1 BC:1 CA:1
|
||||
Face 32: A:14 B:13 C:19 AB:1 BC:1 CA:1
|
||||
Face 33: A:19 B:13 C:12 AB:1 BC:1 CA:1
|
||||
Face 34: A:19 B:12 C:11 AB:1 BC:1 CA:1
|
||||
|
||||
Page 1
|
||||
|
||||
|
||||
|
||||
Face 35: A:11 B:12 C:2 AB:1 BC:1 CA:1
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Page 2
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,264 +1,264 @@
|
|||
Ambient light color: Red=0.039216 Green=0.039216 Blue=0.039216
|
||||
|
||||
Named object: "Object01"
|
||||
Tri-mesh, Vertices: 40 Faces: 80
|
||||
Vertex list:
|
||||
Vertex 0: X: -50.170624 Y: -0.000026 Z: -240.147842
|
||||
Vertex 1: X: -80.584503 Y: -63.958851 Z: -205.014572
|
||||
Vertex 2: X: -129.795166 Y: -39.528744 Z: -148.16774
|
||||
Vertex 3: X: -129.795166 Y: 39.528721 Z: -148.16774
|
||||
Vertex 4: X: -80.584503 Y: 63.958797 Z: -205.014572
|
||||
Vertex 5: X: 85.963654 Y: -0.000002 Z: 31.490465
|
||||
Vertex 6: X: 39.614838 Y: -63.958828 Z: 34.827602
|
||||
Vertex 7: X: -35.37915 Y: -39.528728 Z: 40.227196
|
||||
Vertex 8: X: -35.37912 Y: 39.528736 Z: 40.227188
|
||||
Vertex 9: X: 39.614838 Y: 63.95882 Z: 34.827595
|
||||
Vertex 10: X: -9.852051 Y: 0.000023 Z: 319.829254
|
||||
Vertex 11: X: -44.985352 Y: -63.958805 Z: 289.415405
|
||||
Vertex 12: X: -101.832199 Y: -39.528709 Z: 240.204758
|
||||
Vertex 13: X: -101.832184 Y: 39.528755 Z: 240.204773
|
||||
Vertex 14: X: -44.985352 Y: 63.958843 Z: 289.415405
|
||||
Vertex 15: X: -281.490326 Y: 0.000035 Z: 455.963654
|
||||
Vertex 16: X: -284.827484 Y: -63.958794 Z: 409.614868
|
||||
Vertex 17: X: -290.227112 Y: -39.528702 Z: 334.62085
|
||||
Vertex 18: X: -290.227112 Y: 39.528763 Z: 334.62088
|
||||
Vertex 19: X: -284.827484 Y: 63.958855 Z: 409.614838
|
||||
Vertex 20: X: -569.829163 Y: 0.000026 Z: 360.14798
|
||||
Vertex 21: X: -539.415344 Y: -63.958801 Z: 325.014709
|
||||
Vertex 22: X: -490.204712 Y: -39.528709 Z: 268.167847
|
||||
Vertex 23: X: -490.204712 Y: 39.528755 Z: 268.167847
|
||||
Vertex 24: X: -539.415344 Y: 63.958847 Z: 325.014679
|
||||
Vertex 25: X: -705.963684 Y: 0.000002 Z: 88.509598
|
||||
Vertex 26: X: -659.614807 Y: -63.958824 Z: 85.172462
|
||||
Vertex 27: X: -584.62085 Y: -39.528725 Z: 79.77285
|
||||
Vertex 28: X: -584.62085 Y: 39.52874 Z: 79.77285
|
||||
Vertex 29: X: -659.614868 Y: 63.958824 Z: 85.172447
|
||||
Vertex 30: X: -610.147827 Y: -0.000023 Z: -199.829361
|
||||
Vertex 31: X: -575.014587 Y: -63.958847 Z: -169.415497
|
||||
Vertex 32: X: -518.167725 Y: -39.528744 Z: -120.204819
|
||||
Vertex 33: X: -518.167725 Y: 39.528721 Z: -120.204834
|
||||
Vertex 34: X: -575.014587 Y: 63.958801 Z: -169.415497
|
||||
Vertex 35: X: -338.509338 Y: -0.000035 Z: -335.963745
|
||||
Vertex 36: X: -335.172241 Y: -63.958858 Z: -289.614868
|
||||
Vertex 37: X: -329.772675 Y: -39.528751 Z: -214.620865
|
||||
Vertex 38: X: -329.772675 Y: 39.528713 Z: -214.620865
|
||||
Vertex 39: X: -335.172241 Y: 63.95879 Z: -289.614899
|
||||
Face list:
|
||||
Face 0: A:0 B:6 C:1 AB:0 BC:1 CA:1
|
||||
Smoothing: 1
|
||||
Face 1: A:0 B:5 C:6 AB:1 BC:1 CA:0
|
||||
Smoothing: 1
|
||||
Face 2: A:1 B:7 C:2 AB:0 BC:1 CA:1
|
||||
Smoothing: 2
|
||||
Face 3: A:1 B:6 C:7 AB:1 BC:1 CA:0
|
||||
Smoothing: 2
|
||||
Face 4: A:2 B:8 C:3 AB:0 BC:1 CA:1
|
||||
Smoothing: 3
|
||||
Face 5: A:2 B:7 C:8 AB:1 BC:1 CA:0
|
||||
Smoothing: 3
|
||||
Face 6: A:3 B:9 C:4 AB:0 BC:1 CA:1
|
||||
Smoothing: 4
|
||||
Face 7: A:3 B:8 C:9 AB:1 BC:1 CA:0
|
||||
|
||||
Page 1
|
||||
|
||||
|
||||
|
||||
Smoothing: 4
|
||||
Face 8: A:4 B:5 C:0 AB:0 BC:1 CA:1
|
||||
Smoothing: 5
|
||||
Face 9: A:4 B:9 C:5 AB:1 BC:1 CA:0
|
||||
Smoothing: 5
|
||||
Face 10: A:5 B:11 C:6 AB:0 BC:1 CA:1
|
||||
Smoothing: 6
|
||||
Face 11: A:5 B:10 C:11 AB:1 BC:1 CA:0
|
||||
Smoothing: 6
|
||||
Face 12: A:6 B:12 C:7 AB:0 BC:1 CA:1
|
||||
Smoothing: 7
|
||||
Face 13: A:6 B:11 C:12 AB:1 BC:1 CA:0
|
||||
Smoothing: 7
|
||||
Face 14: A:7 B:13 C:8 AB:0 BC:1 CA:1
|
||||
Smoothing: 8
|
||||
Face 15: A:7 B:12 C:13 AB:1 BC:1 CA:0
|
||||
Smoothing: 8
|
||||
Face 16: A:8 B:14 C:9 AB:0 BC:1 CA:1
|
||||
Smoothing: 9
|
||||
Face 17: A:8 B:13 C:14 AB:1 BC:1 CA:0
|
||||
Smoothing: 9
|
||||
Face 18: A:9 B:10 C:5 AB:0 BC:1 CA:1
|
||||
Smoothing: 10
|
||||
Face 19: A:9 B:14 C:10 AB:1 BC:1 CA:0
|
||||
Smoothing: 10
|
||||
Face 20: A:10 B:16 C:11 AB:0 BC:1 CA:1
|
||||
Smoothing: 11
|
||||
Face 21: A:10 B:15 C:16 AB:1 BC:1 CA:0
|
||||
Smoothing: 11
|
||||
Face 22: A:11 B:17 C:12 AB:0 BC:1 CA:1
|
||||
Smoothing: 12
|
||||
Face 23: A:11 B:16 C:17 AB:1 BC:1 CA:0
|
||||
Smoothing: 12
|
||||
Face 24: A:12 B:18 C:13 AB:0 BC:1 CA:1
|
||||
Smoothing: 13
|
||||
Face 25: A:12 B:17 C:18 AB:1 BC:1 CA:0
|
||||
Smoothing: 13
|
||||
Face 26: A:13 B:19 C:14 AB:0 BC:1 CA:1
|
||||
Smoothing: 14
|
||||
Face 27: A:13 B:18 C:19 AB:1 BC:1 CA:0
|
||||
Smoothing: 14
|
||||
Face 28: A:14 B:15 C:10 AB:0 BC:1 CA:1
|
||||
Smoothing: 15
|
||||
Face 29: A:14 B:19 C:15 AB:1 BC:1 CA:0
|
||||
Smoothing: 15
|
||||
Face 30: A:15 B:21 C:16 AB:0 BC:1 CA:1
|
||||
Smoothing: 16
|
||||
Face 31: A:15 B:20 C:21 AB:1 BC:1 CA:0
|
||||
Smoothing: 16
|
||||
Face 32: A:16 B:22 C:17 AB:0 BC:1 CA:1
|
||||
Smoothing: 17
|
||||
Face 33: A:16 B:21 C:22 AB:1 BC:1 CA:0
|
||||
Smoothing: 17
|
||||
Face 34: A:17 B:23 C:18 AB:0 BC:1 CA:1
|
||||
Smoothing: 18
|
||||
Face 35: A:17 B:22 C:23 AB:1 BC:1 CA:0
|
||||
Smoothing: 18
|
||||
Face 36: A:18 B:24 C:19 AB:0 BC:1 CA:1
|
||||
Smoothing: 19
|
||||
Face 37: A:18 B:23 C:24 AB:1 BC:1 CA:0
|
||||
Smoothing: 19
|
||||
|
||||
Page 2
|
||||
|
||||
|
||||
|
||||
Face 38: A:19 B:20 C:15 AB:0 BC:1 CA:1
|
||||
Smoothing: 20
|
||||
Face 39: A:19 B:24 C:20 AB:1 BC:1 CA:0
|
||||
Smoothing: 20
|
||||
Face 40: A:20 B:26 C:21 AB:0 BC:1 CA:1
|
||||
Smoothing: 21
|
||||
Face 41: A:20 B:25 C:26 AB:1 BC:1 CA:0
|
||||
Smoothing: 21
|
||||
Face 42: A:21 B:27 C:22 AB:0 BC:1 CA:1
|
||||
Smoothing: 22
|
||||
Face 43: A:21 B:26 C:27 AB:1 BC:1 CA:0
|
||||
Smoothing: 22
|
||||
Face 44: A:22 B:28 C:23 AB:0 BC:1 CA:1
|
||||
Smoothing: 23
|
||||
Face 45: A:22 B:27 C:28 AB:1 BC:1 CA:0
|
||||
Smoothing: 23
|
||||
Face 46: A:23 B:29 C:24 AB:0 BC:1 CA:1
|
||||
Smoothing: 24
|
||||
Face 47: A:23 B:28 C:29 AB:1 BC:1 CA:0
|
||||
Smoothing: 24
|
||||
Face 48: A:24 B:25 C:20 AB:0 BC:1 CA:1
|
||||
Smoothing: 25
|
||||
Face 49: A:24 B:29 C:25 AB:1 BC:1 CA:0
|
||||
Smoothing: 25
|
||||
Face 50: A:25 B:31 C:26 AB:0 BC:1 CA:1
|
||||
Smoothing: 26
|
||||
Face 51: A:25 B:30 C:31 AB:1 BC:1 CA:0
|
||||
Smoothing: 26
|
||||
Face 52: A:26 B:32 C:27 AB:0 BC:1 CA:1
|
||||
Smoothing: 27
|
||||
Face 53: A:26 B:31 C:32 AB:1 BC:1 CA:0
|
||||
Smoothing: 27
|
||||
Face 54: A:27 B:33 C:28 AB:0 BC:1 CA:1
|
||||
Smoothing: 28
|
||||
Face 55: A:27 B:32 C:33 AB:1 BC:1 CA:0
|
||||
Smoothing: 28
|
||||
Face 56: A:28 B:34 C:29 AB:0 BC:1 CA:1
|
||||
Smoothing: 29
|
||||
Face 57: A:28 B:33 C:34 AB:1 BC:1 CA:0
|
||||
Smoothing: 29
|
||||
Face 58: A:29 B:30 C:25 AB:0 BC:1 CA:1
|
||||
Smoothing: 30
|
||||
Face 59: A:29 B:34 C:30 AB:1 BC:1 CA:0
|
||||
Smoothing: 30
|
||||
Face 60: A:30 B:36 C:31 AB:0 BC:1 CA:1
|
||||
Smoothing: 31
|
||||
Face 61: A:30 B:35 C:36 AB:1 BC:1 CA:0
|
||||
Smoothing: 31
|
||||
Face 62: A:31 B:37 C:32 AB:0 BC:1 CA:1
|
||||
Smoothing: 32
|
||||
Face 63: A:31 B:36 C:37 AB:1 BC:1 CA:0
|
||||
Smoothing: 32
|
||||
Face 64: A:32 B:38 C:33 AB:0 BC:1 CA:1
|
||||
Smoothing: 1
|
||||
Face 65: A:32 B:37 C:38 AB:1 BC:1 CA:0
|
||||
Smoothing: 1
|
||||
Face 66: A:33 B:39 C:34 AB:0 BC:1 CA:1
|
||||
Smoothing: 2
|
||||
Face 67: A:33 B:38 C:39 AB:1 BC:1 CA:0
|
||||
Smoothing: 2
|
||||
Face 68: A:34 B:35 C:30 AB:0 BC:1 CA:1
|
||||
|
||||
Page 3
|
||||
|
||||
|
||||
|
||||
Smoothing: 3
|
||||
Face 69: A:34 B:39 C:35 AB:1 BC:1 CA:0
|
||||
Smoothing: 3
|
||||
Face 70: A:35 B:1 C:36 AB:0 BC:1 CA:1
|
||||
Smoothing: 4
|
||||
Face 71: A:35 B:0 C:1 AB:1 BC:1 CA:0
|
||||
Smoothing: 4
|
||||
Face 72: A:36 B:2 C:37 AB:0 BC:1 CA:1
|
||||
Smoothing: 5
|
||||
Face 73: A:36 B:1 C:2 AB:1 BC:1 CA:0
|
||||
Smoothing: 5
|
||||
Face 74: A:37 B:3 C:38 AB:0 BC:1 CA:1
|
||||
Smoothing: 6
|
||||
Face 75: A:37 B:2 C:3 AB:1 BC:1 CA:0
|
||||
Smoothing: 6
|
||||
Face 76: A:38 B:4 C:39 AB:0 BC:1 CA:1
|
||||
Smoothing: 7
|
||||
Face 77: A:38 B:3 C:4 AB:1 BC:1 CA:0
|
||||
Smoothing: 7
|
||||
Face 78: A:39 B:0 C:35 AB:0 BC:1 CA:1
|
||||
Smoothing: 8
|
||||
Face 79: A:39 B:4 C:0 AB:1 BC:1 CA:0
|
||||
Smoothing: 8
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Page 4
|
||||
|
||||
|
||||
|
||||
Ambient light color: Red=0.039216 Green=0.039216 Blue=0.039216
|
||||
|
||||
Named object: "Object01"
|
||||
Tri-mesh, Vertices: 40 Faces: 80
|
||||
Vertex list:
|
||||
Vertex 0: X: -50.170624 Y: -0.000026 Z: -240.147842
|
||||
Vertex 1: X: -80.584503 Y: -63.958851 Z: -205.014572
|
||||
Vertex 2: X: -129.795166 Y: -39.528744 Z: -148.16774
|
||||
Vertex 3: X: -129.795166 Y: 39.528721 Z: -148.16774
|
||||
Vertex 4: X: -80.584503 Y: 63.958797 Z: -205.014572
|
||||
Vertex 5: X: 85.963654 Y: -0.000002 Z: 31.490465
|
||||
Vertex 6: X: 39.614838 Y: -63.958828 Z: 34.827602
|
||||
Vertex 7: X: -35.37915 Y: -39.528728 Z: 40.227196
|
||||
Vertex 8: X: -35.37912 Y: 39.528736 Z: 40.227188
|
||||
Vertex 9: X: 39.614838 Y: 63.95882 Z: 34.827595
|
||||
Vertex 10: X: -9.852051 Y: 0.000023 Z: 319.829254
|
||||
Vertex 11: X: -44.985352 Y: -63.958805 Z: 289.415405
|
||||
Vertex 12: X: -101.832199 Y: -39.528709 Z: 240.204758
|
||||
Vertex 13: X: -101.832184 Y: 39.528755 Z: 240.204773
|
||||
Vertex 14: X: -44.985352 Y: 63.958843 Z: 289.415405
|
||||
Vertex 15: X: -281.490326 Y: 0.000035 Z: 455.963654
|
||||
Vertex 16: X: -284.827484 Y: -63.958794 Z: 409.614868
|
||||
Vertex 17: X: -290.227112 Y: -39.528702 Z: 334.62085
|
||||
Vertex 18: X: -290.227112 Y: 39.528763 Z: 334.62088
|
||||
Vertex 19: X: -284.827484 Y: 63.958855 Z: 409.614838
|
||||
Vertex 20: X: -569.829163 Y: 0.000026 Z: 360.14798
|
||||
Vertex 21: X: -539.415344 Y: -63.958801 Z: 325.014709
|
||||
Vertex 22: X: -490.204712 Y: -39.528709 Z: 268.167847
|
||||
Vertex 23: X: -490.204712 Y: 39.528755 Z: 268.167847
|
||||
Vertex 24: X: -539.415344 Y: 63.958847 Z: 325.014679
|
||||
Vertex 25: X: -705.963684 Y: 0.000002 Z: 88.509598
|
||||
Vertex 26: X: -659.614807 Y: -63.958824 Z: 85.172462
|
||||
Vertex 27: X: -584.62085 Y: -39.528725 Z: 79.77285
|
||||
Vertex 28: X: -584.62085 Y: 39.52874 Z: 79.77285
|
||||
Vertex 29: X: -659.614868 Y: 63.958824 Z: 85.172447
|
||||
Vertex 30: X: -610.147827 Y: -0.000023 Z: -199.829361
|
||||
Vertex 31: X: -575.014587 Y: -63.958847 Z: -169.415497
|
||||
Vertex 32: X: -518.167725 Y: -39.528744 Z: -120.204819
|
||||
Vertex 33: X: -518.167725 Y: 39.528721 Z: -120.204834
|
||||
Vertex 34: X: -575.014587 Y: 63.958801 Z: -169.415497
|
||||
Vertex 35: X: -338.509338 Y: -0.000035 Z: -335.963745
|
||||
Vertex 36: X: -335.172241 Y: -63.958858 Z: -289.614868
|
||||
Vertex 37: X: -329.772675 Y: -39.528751 Z: -214.620865
|
||||
Vertex 38: X: -329.772675 Y: 39.528713 Z: -214.620865
|
||||
Vertex 39: X: -335.172241 Y: 63.95879 Z: -289.614899
|
||||
Face list:
|
||||
Face 0: A:0 B:6 C:1 AB:0 BC:1 CA:1
|
||||
Smoothing: 1
|
||||
Face 1: A:0 B:5 C:6 AB:1 BC:1 CA:0
|
||||
Smoothing: 1
|
||||
Face 2: A:1 B:7 C:2 AB:0 BC:1 CA:1
|
||||
Smoothing: 2
|
||||
Face 3: A:1 B:6 C:7 AB:1 BC:1 CA:0
|
||||
Smoothing: 2
|
||||
Face 4: A:2 B:8 C:3 AB:0 BC:1 CA:1
|
||||
Smoothing: 3
|
||||
Face 5: A:2 B:7 C:8 AB:1 BC:1 CA:0
|
||||
Smoothing: 3
|
||||
Face 6: A:3 B:9 C:4 AB:0 BC:1 CA:1
|
||||
Smoothing: 4
|
||||
Face 7: A:3 B:8 C:9 AB:1 BC:1 CA:0
|
||||
|
||||
Page 1
|
||||
|
||||
|
||||
|
||||
Smoothing: 4
|
||||
Face 8: A:4 B:5 C:0 AB:0 BC:1 CA:1
|
||||
Smoothing: 5
|
||||
Face 9: A:4 B:9 C:5 AB:1 BC:1 CA:0
|
||||
Smoothing: 5
|
||||
Face 10: A:5 B:11 C:6 AB:0 BC:1 CA:1
|
||||
Smoothing: 6
|
||||
Face 11: A:5 B:10 C:11 AB:1 BC:1 CA:0
|
||||
Smoothing: 6
|
||||
Face 12: A:6 B:12 C:7 AB:0 BC:1 CA:1
|
||||
Smoothing: 7
|
||||
Face 13: A:6 B:11 C:12 AB:1 BC:1 CA:0
|
||||
Smoothing: 7
|
||||
Face 14: A:7 B:13 C:8 AB:0 BC:1 CA:1
|
||||
Smoothing: 8
|
||||
Face 15: A:7 B:12 C:13 AB:1 BC:1 CA:0
|
||||
Smoothing: 8
|
||||
Face 16: A:8 B:14 C:9 AB:0 BC:1 CA:1
|
||||
Smoothing: 9
|
||||
Face 17: A:8 B:13 C:14 AB:1 BC:1 CA:0
|
||||
Smoothing: 9
|
||||
Face 18: A:9 B:10 C:5 AB:0 BC:1 CA:1
|
||||
Smoothing: 10
|
||||
Face 19: A:9 B:14 C:10 AB:1 BC:1 CA:0
|
||||
Smoothing: 10
|
||||
Face 20: A:10 B:16 C:11 AB:0 BC:1 CA:1
|
||||
Smoothing: 11
|
||||
Face 21: A:10 B:15 C:16 AB:1 BC:1 CA:0
|
||||
Smoothing: 11
|
||||
Face 22: A:11 B:17 C:12 AB:0 BC:1 CA:1
|
||||
Smoothing: 12
|
||||
Face 23: A:11 B:16 C:17 AB:1 BC:1 CA:0
|
||||
Smoothing: 12
|
||||
Face 24: A:12 B:18 C:13 AB:0 BC:1 CA:1
|
||||
Smoothing: 13
|
||||
Face 25: A:12 B:17 C:18 AB:1 BC:1 CA:0
|
||||
Smoothing: 13
|
||||
Face 26: A:13 B:19 C:14 AB:0 BC:1 CA:1
|
||||
Smoothing: 14
|
||||
Face 27: A:13 B:18 C:19 AB:1 BC:1 CA:0
|
||||
Smoothing: 14
|
||||
Face 28: A:14 B:15 C:10 AB:0 BC:1 CA:1
|
||||
Smoothing: 15
|
||||
Face 29: A:14 B:19 C:15 AB:1 BC:1 CA:0
|
||||
Smoothing: 15
|
||||
Face 30: A:15 B:21 C:16 AB:0 BC:1 CA:1
|
||||
Smoothing: 16
|
||||
Face 31: A:15 B:20 C:21 AB:1 BC:1 CA:0
|
||||
Smoothing: 16
|
||||
Face 32: A:16 B:22 C:17 AB:0 BC:1 CA:1
|
||||
Smoothing: 17
|
||||
Face 33: A:16 B:21 C:22 AB:1 BC:1 CA:0
|
||||
Smoothing: 17
|
||||
Face 34: A:17 B:23 C:18 AB:0 BC:1 CA:1
|
||||
Smoothing: 18
|
||||
Face 35: A:17 B:22 C:23 AB:1 BC:1 CA:0
|
||||
Smoothing: 18
|
||||
Face 36: A:18 B:24 C:19 AB:0 BC:1 CA:1
|
||||
Smoothing: 19
|
||||
Face 37: A:18 B:23 C:24 AB:1 BC:1 CA:0
|
||||
Smoothing: 19
|
||||
|
||||
Page 2
|
||||
|
||||
|
||||
|
||||
Face 38: A:19 B:20 C:15 AB:0 BC:1 CA:1
|
||||
Smoothing: 20
|
||||
Face 39: A:19 B:24 C:20 AB:1 BC:1 CA:0
|
||||
Smoothing: 20
|
||||
Face 40: A:20 B:26 C:21 AB:0 BC:1 CA:1
|
||||
Smoothing: 21
|
||||
Face 41: A:20 B:25 C:26 AB:1 BC:1 CA:0
|
||||
Smoothing: 21
|
||||
Face 42: A:21 B:27 C:22 AB:0 BC:1 CA:1
|
||||
Smoothing: 22
|
||||
Face 43: A:21 B:26 C:27 AB:1 BC:1 CA:0
|
||||
Smoothing: 22
|
||||
Face 44: A:22 B:28 C:23 AB:0 BC:1 CA:1
|
||||
Smoothing: 23
|
||||
Face 45: A:22 B:27 C:28 AB:1 BC:1 CA:0
|
||||
Smoothing: 23
|
||||
Face 46: A:23 B:29 C:24 AB:0 BC:1 CA:1
|
||||
Smoothing: 24
|
||||
Face 47: A:23 B:28 C:29 AB:1 BC:1 CA:0
|
||||
Smoothing: 24
|
||||
Face 48: A:24 B:25 C:20 AB:0 BC:1 CA:1
|
||||
Smoothing: 25
|
||||
Face 49: A:24 B:29 C:25 AB:1 BC:1 CA:0
|
||||
Smoothing: 25
|
||||
Face 50: A:25 B:31 C:26 AB:0 BC:1 CA:1
|
||||
Smoothing: 26
|
||||
Face 51: A:25 B:30 C:31 AB:1 BC:1 CA:0
|
||||
Smoothing: 26
|
||||
Face 52: A:26 B:32 C:27 AB:0 BC:1 CA:1
|
||||
Smoothing: 27
|
||||
Face 53: A:26 B:31 C:32 AB:1 BC:1 CA:0
|
||||
Smoothing: 27
|
||||
Face 54: A:27 B:33 C:28 AB:0 BC:1 CA:1
|
||||
Smoothing: 28
|
||||
Face 55: A:27 B:32 C:33 AB:1 BC:1 CA:0
|
||||
Smoothing: 28
|
||||
Face 56: A:28 B:34 C:29 AB:0 BC:1 CA:1
|
||||
Smoothing: 29
|
||||
Face 57: A:28 B:33 C:34 AB:1 BC:1 CA:0
|
||||
Smoothing: 29
|
||||
Face 58: A:29 B:30 C:25 AB:0 BC:1 CA:1
|
||||
Smoothing: 30
|
||||
Face 59: A:29 B:34 C:30 AB:1 BC:1 CA:0
|
||||
Smoothing: 30
|
||||
Face 60: A:30 B:36 C:31 AB:0 BC:1 CA:1
|
||||
Smoothing: 31
|
||||
Face 61: A:30 B:35 C:36 AB:1 BC:1 CA:0
|
||||
Smoothing: 31
|
||||
Face 62: A:31 B:37 C:32 AB:0 BC:1 CA:1
|
||||
Smoothing: 32
|
||||
Face 63: A:31 B:36 C:37 AB:1 BC:1 CA:0
|
||||
Smoothing: 32
|
||||
Face 64: A:32 B:38 C:33 AB:0 BC:1 CA:1
|
||||
Smoothing: 1
|
||||
Face 65: A:32 B:37 C:38 AB:1 BC:1 CA:0
|
||||
Smoothing: 1
|
||||
Face 66: A:33 B:39 C:34 AB:0 BC:1 CA:1
|
||||
Smoothing: 2
|
||||
Face 67: A:33 B:38 C:39 AB:1 BC:1 CA:0
|
||||
Smoothing: 2
|
||||
Face 68: A:34 B:35 C:30 AB:0 BC:1 CA:1
|
||||
|
||||
Page 3
|
||||
|
||||
|
||||
|
||||
Smoothing: 3
|
||||
Face 69: A:34 B:39 C:35 AB:1 BC:1 CA:0
|
||||
Smoothing: 3
|
||||
Face 70: A:35 B:1 C:36 AB:0 BC:1 CA:1
|
||||
Smoothing: 4
|
||||
Face 71: A:35 B:0 C:1 AB:1 BC:1 CA:0
|
||||
Smoothing: 4
|
||||
Face 72: A:36 B:2 C:37 AB:0 BC:1 CA:1
|
||||
Smoothing: 5
|
||||
Face 73: A:36 B:1 C:2 AB:1 BC:1 CA:0
|
||||
Smoothing: 5
|
||||
Face 74: A:37 B:3 C:38 AB:0 BC:1 CA:1
|
||||
Smoothing: 6
|
||||
Face 75: A:37 B:2 C:3 AB:1 BC:1 CA:0
|
||||
Smoothing: 6
|
||||
Face 76: A:38 B:4 C:39 AB:0 BC:1 CA:1
|
||||
Smoothing: 7
|
||||
Face 77: A:38 B:3 C:4 AB:1 BC:1 CA:0
|
||||
Smoothing: 7
|
||||
Face 78: A:39 B:0 C:35 AB:0 BC:1 CA:1
|
||||
Smoothing: 8
|
||||
Face 79: A:39 B:4 C:0 AB:1 BC:1 CA:0
|
||||
Smoothing: 8
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
Page 4
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,63 +1,63 @@
|
|||
# Makefile for GLU for GCC-2.95.2/Mingw32 contributed by
|
||||
# Paul Garceau <pgarceau@teleport.com>
|
||||
|
||||
# Mesa 3-D graphics library
|
||||
# Version: 3.3
|
||||
# Copyright (C) 1995-1999 Brian Paul
|
||||
#
|
||||
# This library is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Library General Public
|
||||
# License as published by the Free Software Foundation; either
|
||||
# version 2 of the License, or (at your option) any later version.
|
||||
#
|
||||
# This library is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# Library General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Library General Public
|
||||
# License along with this library; if not, write to the Free
|
||||
# Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
|
||||
MESA_MAJOR=3
|
||||
MESA_MINOR=3
|
||||
MESA_TINY=0
|
||||
VERSION=$(MESA_MAJOR).$(MESA_MINOR)
|
||||
|
||||
CFLAGS = -I. -DWIN32 -D__WIN32__ -D_WINDOWS \
|
||||
-O2 -funroll-loops \
|
||||
-fexpensive-optimizations -fomit-frame-pointer -ffast-math \
|
||||
-malign-loops=2 -malign-jumps=2 -malign-functions=2 \
|
||||
-mwindows
|
||||
CC = gcc
|
||||
MAKELIB = ar ru
|
||||
GLU_LIB = libGLU.a
|
||||
|
||||
|
||||
##### MACROS #####
|
||||
|
||||
VPATH = RCS
|
||||
|
||||
INCDIR = ../include
|
||||
LIBDIR = ../lib
|
||||
|
||||
SOURCES = glu.c mipmap.c nurbs.c nurbscrv.c nurbssrf.c nurbsutl.c \
|
||||
polytest.c project.c quadric.c tess.c tesselat.c
|
||||
|
||||
OBJECTS = $(SOURCES:.c=.o)
|
||||
|
||||
|
||||
|
||||
##### RULES #####
|
||||
|
||||
.c.o:
|
||||
$(CC) -c -I$(INCDIR) $(CFLAGS) $<
|
||||
|
||||
|
||||
|
||||
##### TARGETS #####
|
||||
|
||||
# Make the library:
|
||||
$(LIBDIR)/$(GLU_LIB): $(OBJECTS)
|
||||
# Makefile for GLU for GCC-2.95.2/Mingw32 contributed by
|
||||
# Paul Garceau <pgarceau@teleport.com>
|
||||
|
||||
# Mesa 3-D graphics library
|
||||
# Version: 3.3
|
||||
# Copyright (C) 1995-1999 Brian Paul
|
||||
#
|
||||
# This library is free software; you can redistribute it and/or
|
||||
# modify it under the terms of the GNU Library General Public
|
||||
# License as published by the Free Software Foundation; either
|
||||
# version 2 of the License, or (at your option) any later version.
|
||||
#
|
||||
# This library is distributed in the hope that it will be useful,
|
||||
# but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
# Library General Public License for more details.
|
||||
#
|
||||
# You should have received a copy of the GNU Library General Public
|
||||
# License along with this library; if not, write to the Free
|
||||
# Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
|
||||
|
||||
MESA_MAJOR=3
|
||||
MESA_MINOR=3
|
||||
MESA_TINY=0
|
||||
VERSION=$(MESA_MAJOR).$(MESA_MINOR)
|
||||
|
||||
CFLAGS = -I. -DWIN32 -D__WIN32__ -D_WINDOWS \
|
||||
-O2 -funroll-loops \
|
||||
-fexpensive-optimizations -fomit-frame-pointer -ffast-math \
|
||||
-malign-loops=2 -malign-jumps=2 -malign-functions=2 \
|
||||
-mwindows
|
||||
CC = gcc
|
||||
MAKELIB = ar ru
|
||||
GLU_LIB = libGLU.a
|
||||
|
||||
|
||||
##### MACROS #####
|
||||
|
||||
VPATH = RCS
|
||||
|
||||
INCDIR = ../include
|
||||
LIBDIR = ../lib
|
||||
|
||||
SOURCES = glu.c mipmap.c nurbs.c nurbscrv.c nurbssrf.c nurbsutl.c \
|
||||
polytest.c project.c quadric.c tess.c tesselat.c
|
||||
|
||||
OBJECTS = $(SOURCES:.c=.o)
|
||||
|
||||
|
||||
|
||||
##### RULES #####
|
||||
|
||||
.c.o:
|
||||
$(CC) -c -I$(INCDIR) $(CFLAGS) $<
|
||||
|
||||
|
||||
|
||||
##### TARGETS #####
|
||||
|
||||
# Make the library:
|
||||
$(LIBDIR)/$(GLU_LIB): $(OBJECTS)
|
||||
$(MAKELIB) $(GLU_LIB) $(MAJOR) $(MINOR) $(TINY) $(OBJECTS)
|
|
@ -1,103 +1,103 @@
|
|||
EXPORTS
|
||||
glutInit
|
||||
glutInitDisplayMode
|
||||
glutInitDisplayString
|
||||
glutInitWindowPosition
|
||||
glutInitWindowSize
|
||||
glutMainLoop
|
||||
glutCreateWindow
|
||||
glutCreateSubWindow
|
||||
glutDestroyWindow
|
||||
glutPostRedisplay
|
||||
glutSwapBuffers
|
||||
glutGetWindow
|
||||
glutSetWindow
|
||||
glutSetWindowTitle
|
||||
glutSetIconTitle
|
||||
glutPositionWindow
|
||||
glutReshapeWindow
|
||||
glutPopWindow
|
||||
glutPushWindow
|
||||
glutIconifyWindow
|
||||
glutShowWindow
|
||||
glutHideWindow
|
||||
glutFullScreen
|
||||
glutSetCursor
|
||||
glutWarpPointer
|
||||
glutEstablishOverlay
|
||||
glutRemoveOverlay
|
||||
glutUseLayer
|
||||
glutPostOverlayRedisplay
|
||||
glutShowOverlay
|
||||
glutHideOverlay
|
||||
glutCreateMenu
|
||||
glutDestroyMenu
|
||||
glutGetMenu
|
||||
glutSetMenu
|
||||
glutAddMenuEntry
|
||||
glutAddSubMenu
|
||||
glutChangeToMenuEntry
|
||||
glutChangeToSubMenu
|
||||
glutRemoveMenuItem
|
||||
glutAttachMenu
|
||||
glutDetachMenu
|
||||
glutDisplayFunc
|
||||
glutReshapeFunc
|
||||
glutKeyboardFunc
|
||||
glutMouseFunc
|
||||
glutMotionFunc
|
||||
glutPassiveMotionFunc
|
||||
glutEntryFunc
|
||||
glutVisibilityFunc
|
||||
glutIdleFunc
|
||||
glutTimerFunc
|
||||
glutMenuStateFunc
|
||||
glutSpecialFunc
|
||||
glutSpaceballMotionFunc
|
||||
glutSpaceballRotateFunc
|
||||
glutSpaceballButtonFunc
|
||||
glutButtonBoxFunc
|
||||
glutDialsFunc
|
||||
glutTabletMotionFunc
|
||||
glutTabletButtonFunc
|
||||
glutMenuStatusFunc
|
||||
glutOverlayDisplayFunc
|
||||
glutWindowStatusFunc
|
||||
glutSetColor
|
||||
glutGetColor
|
||||
glutCopyColormap
|
||||
glutGet
|
||||
glutDeviceGet
|
||||
glutExtensionSupported
|
||||
glutGetModifiers
|
||||
glutLayerGet
|
||||
glutBitmapCharacter
|
||||
glutBitmapWidth
|
||||
glutStrokeCharacter
|
||||
glutStrokeWidth
|
||||
glutBitmapLength
|
||||
glutStrokeLength
|
||||
glutWireSphere
|
||||
glutSolidSphere
|
||||
glutWireCone
|
||||
glutSolidCone
|
||||
glutWireCube
|
||||
glutSolidCube
|
||||
glutWireTorus
|
||||
glutSolidTorus
|
||||
glutWireDodecahedron
|
||||
glutSolidDodecahedron
|
||||
glutWireTeapot
|
||||
glutSolidTeapot
|
||||
glutWireOctahedron
|
||||
glutSolidOctahedron
|
||||
glutWireTetrahedron
|
||||
glutSolidTetrahedron
|
||||
glutWireIcosahedron
|
||||
glutSolidIcosahedron
|
||||
glutVideoResizeGet
|
||||
glutSetupVideoResizing
|
||||
glutStopVideoResizing
|
||||
glutVideoResize
|
||||
glutVideoPan
|
||||
glutReportErrors
|
||||
EXPORTS
|
||||
glutInit
|
||||
glutInitDisplayMode
|
||||
glutInitDisplayString
|
||||
glutInitWindowPosition
|
||||
glutInitWindowSize
|
||||
glutMainLoop
|
||||
glutCreateWindow
|
||||
glutCreateSubWindow
|
||||
glutDestroyWindow
|
||||
glutPostRedisplay
|
||||
glutSwapBuffers
|
||||
glutGetWindow
|
||||
glutSetWindow
|
||||
glutSetWindowTitle
|
||||
glutSetIconTitle
|
||||
glutPositionWindow
|
||||
glutReshapeWindow
|
||||
glutPopWindow
|
||||
glutPushWindow
|
||||
glutIconifyWindow
|
||||
glutShowWindow
|
||||
glutHideWindow
|
||||
glutFullScreen
|
||||
glutSetCursor
|
||||
glutWarpPointer
|
||||
glutEstablishOverlay
|
||||
glutRemoveOverlay
|
||||
glutUseLayer
|
||||
glutPostOverlayRedisplay
|
||||
glutShowOverlay
|
||||
glutHideOverlay
|
||||
glutCreateMenu
|
||||
glutDestroyMenu
|
||||
glutGetMenu
|
||||
glutSetMenu
|
||||
glutAddMenuEntry
|
||||
glutAddSubMenu
|
||||
glutChangeToMenuEntry
|
||||
glutChangeToSubMenu
|
||||
glutRemoveMenuItem
|
||||
glutAttachMenu
|
||||
glutDetachMenu
|
||||
glutDisplayFunc
|
||||
glutReshapeFunc
|
||||
glutKeyboardFunc
|
||||
glutMouseFunc
|
||||
glutMotionFunc
|
||||
glutPassiveMotionFunc
|
||||
glutEntryFunc
|
||||
glutVisibilityFunc
|
||||
glutIdleFunc
|
||||
glutTimerFunc
|
||||
glutMenuStateFunc
|
||||
glutSpecialFunc
|
||||
glutSpaceballMotionFunc
|
||||
glutSpaceballRotateFunc
|
||||
glutSpaceballButtonFunc
|
||||
glutButtonBoxFunc
|
||||
glutDialsFunc
|
||||
glutTabletMotionFunc
|
||||
glutTabletButtonFunc
|
||||
glutMenuStatusFunc
|
||||
glutOverlayDisplayFunc
|
||||
glutWindowStatusFunc
|
||||
glutSetColor
|
||||
glutGetColor
|
||||
glutCopyColormap
|
||||
glutGet
|
||||
glutDeviceGet
|
||||
glutExtensionSupported
|
||||
glutGetModifiers
|
||||
glutLayerGet
|
||||
glutBitmapCharacter
|
||||
glutBitmapWidth
|
||||
glutStrokeCharacter
|
||||
glutStrokeWidth
|
||||
glutBitmapLength
|
||||
glutStrokeLength
|
||||
glutWireSphere
|
||||
glutSolidSphere
|
||||
glutWireCone
|
||||
glutSolidCone
|
||||
glutWireCube
|
||||
glutSolidCube
|
||||
glutWireTorus
|
||||
glutSolidTorus
|
||||
glutWireDodecahedron
|
||||
glutSolidDodecahedron
|
||||
glutWireTeapot
|
||||
glutSolidTeapot
|
||||
glutWireOctahedron
|
||||
glutSolidOctahedron
|
||||
glutWireTetrahedron
|
||||
glutSolidTetrahedron
|
||||
glutWireIcosahedron
|
||||
glutSolidIcosahedron
|
||||
glutVideoResizeGet
|
||||
glutSetupVideoResizing
|
||||
glutStopVideoResizing
|
||||
glutVideoResize
|
||||
glutVideoPan
|
||||
glutReportErrors
|
||||
|
|
|
@ -1,420 +1,420 @@
|
|||
# Makefile
|
||||
# Created by IBM WorkFrame/2 MakeMake at 12:46:25 on 3 June 2003
|
||||
#
|
||||
# The actions included in this make file are:
|
||||
# Compile::C++ Compiler
|
||||
# Link::Linker
|
||||
# Lib::Import Lib
|
||||
|
||||
.SUFFIXES:
|
||||
|
||||
.SUFFIXES: \
|
||||
.LIB .cpp .dll .obj
|
||||
|
||||
.cpp.obj:
|
||||
@echo " Compile::C++ Compiler "
|
||||
icc.exe /I..\ /I..\X86 /I..\GL /I..\swrast /I..\swrast_setup /Ss /Wcmpcndcnscnvcpydclenuextgeninilanobsordparporppcprorearettrdtruund /Tx /O /Gm /Ge- /G5 /Gf /Gi /Oi /C %s
|
||||
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm}.cpp.obj:
|
||||
@echo " Compile::C++ Compiler "
|
||||
icc.exe /I..\ /I..\X86 /I..\GL /I..\swrast /I..\swrast_setup /Ss /Wcmpcndcnscnvcpydclenuextgeninilanobsordparporppcprorearettrdtruund /Tx /O /Gm /Ge- /G5 /Gf /Gi /Oi /C %s
|
||||
|
||||
.dll.LIB:
|
||||
@echo " Lib::Import Lib "
|
||||
implib.exe %|dpfF.LIB %s
|
||||
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm}.dll.LIB:
|
||||
@echo " Lib::Import Lib "
|
||||
implib.exe %|dpfF.LIB %s
|
||||
|
||||
all: \
|
||||
.\libGlut.LIB
|
||||
|
||||
.\libGlut.dll: \
|
||||
.\os2_winproc.obj \
|
||||
.\WarpWin.obj \
|
||||
.\glutOverlay.obj \
|
||||
.\glut_8x13.obj \
|
||||
.\glut_9x15.obj \
|
||||
.\glut_bitmap.obj \
|
||||
.\glut_cindex.obj \
|
||||
.\glut_cmap.obj \
|
||||
.\glut_cursor.obj \
|
||||
.\glut_event.obj \
|
||||
.\glut_ext.obj \
|
||||
.\glut_fullscrn.obj \
|
||||
.\glut_gamemode.obj \
|
||||
.\glut_get.obj \
|
||||
.\glut_hel10.obj \
|
||||
.\glut_hel12.obj \
|
||||
.\glut_hel18.obj \
|
||||
.\glut_init.obj \
|
||||
.\glut_input.obj \
|
||||
.\glut_key.obj \
|
||||
.\glut_keyctrl.obj \
|
||||
.\glut_keyup.obj \
|
||||
.\glut_mesa.obj \
|
||||
.\glut_modifier.obj \
|
||||
.\glut_roman.obj \
|
||||
.\glut_shapes.obj \
|
||||
.\glut_stroke.obj \
|
||||
.\glut_swap.obj \
|
||||
.\glut_teapot.obj \
|
||||
.\glut_tr24.obj \
|
||||
.\glut_util.obj \
|
||||
.\glut_vidresize.obj \
|
||||
.\glut_warp.obj \
|
||||
.\glut_win.obj \
|
||||
.\glut_winmisc.obj \
|
||||
.\os2_glx.obj \
|
||||
.\os2_menu.obj \
|
||||
..\si-glu\libGLU.lib \
|
||||
..\MesaDll\MesaGL2.lib \
|
||||
..\drv\DrvLoad\MesaDrvLoad.lib \
|
||||
{$(LIB)}libGlut.DEF
|
||||
@echo " Link::Linker "
|
||||
icc.exe @<<
|
||||
/B" /dbgpack /exepack:2 /st:200000 /packd /optfunc"
|
||||
/FelibGlut.dll
|
||||
..\si-glu\libGLU.lib
|
||||
..\MesaDll\MesaGL2.lib
|
||||
..\drv\DrvLoad\MesaDrvLoad.lib
|
||||
libGlut.DEF
|
||||
.\os2_winproc.obj
|
||||
.\WarpWin.obj
|
||||
.\glutOverlay.obj
|
||||
.\glut_8x13.obj
|
||||
.\glut_9x15.obj
|
||||
.\glut_bitmap.obj
|
||||
.\glut_cindex.obj
|
||||
.\glut_cmap.obj
|
||||
.\glut_cursor.obj
|
||||
.\glut_event.obj
|
||||
.\glut_ext.obj
|
||||
.\glut_fullscrn.obj
|
||||
.\glut_gamemode.obj
|
||||
.\glut_get.obj
|
||||
.\glut_hel10.obj
|
||||
.\glut_hel12.obj
|
||||
.\glut_hel18.obj
|
||||
.\glut_init.obj
|
||||
.\glut_input.obj
|
||||
.\glut_key.obj
|
||||
.\glut_keyctrl.obj
|
||||
.\glut_keyup.obj
|
||||
.\glut_mesa.obj
|
||||
.\glut_modifier.obj
|
||||
.\glut_roman.obj
|
||||
.\glut_shapes.obj
|
||||
.\glut_stroke.obj
|
||||
.\glut_swap.obj
|
||||
.\glut_teapot.obj
|
||||
.\glut_tr24.obj
|
||||
.\glut_util.obj
|
||||
.\glut_vidresize.obj
|
||||
.\glut_warp.obj
|
||||
.\glut_win.obj
|
||||
.\glut_winmisc.obj
|
||||
.\os2_glx.obj
|
||||
.\os2_menu.obj
|
||||
<<
|
||||
|
||||
.\os2_winproc.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\os2_winproc.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h \
|
||||
gl\os2mesa.h \
|
||||
gl\gl.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}gl_mangle.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}GL/os2_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}os2_config.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}os2mesadef.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}context.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glapi.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}mtypes.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glheader.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}config.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glapitable.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glthread.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}math/m_matrix.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}Trace/tr_context.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}dd.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}conf.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}GL/os2_config.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}GL/glext.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}Xthreads.h
|
||||
|
||||
.\os2_menu.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\os2_menu.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\os2_glx.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\os2_glx.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
gl\os2mesa.h \
|
||||
gl\gl.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}gl_mangle.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}GL/os2_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}os2_config.h
|
||||
|
||||
.\glut_winmisc.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_winmisc.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_win.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_win.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutos2.h \
|
||||
gl\os2mesa.h \
|
||||
gl\gl.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}gl_mangle.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}GL/os2_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}os2_config.h
|
||||
|
||||
.\glut_warp.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_warp.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_vidresize.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_vidresize.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_util.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_util.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_tr24.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_tr24.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutbitmap.h
|
||||
|
||||
.\glut_teapot.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_teapot.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_swap.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_swap.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_stroke.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_stroke.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutstroke.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_shapes.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_shapes.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_roman.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_roman.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutstroke.h
|
||||
|
||||
.\glut_modifier.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_modifier.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_mesa.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_mesa.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_keyup.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_keyup.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_keyctrl.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_keyctrl.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_key.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_key.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_input.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_input.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_init.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_init.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_hel18.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_hel18.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutbitmap.h
|
||||
|
||||
.\glut_hel12.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_hel12.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutbitmap.h
|
||||
|
||||
.\glut_hel10.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_hel10.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutbitmap.h
|
||||
|
||||
.\glut_get.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_get.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_gamemode.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_gamemode.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_fullscrn.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_fullscrn.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_ext.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_ext.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_event.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_event.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_cursor.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_cursor.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_cmap.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_cmap.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}layerutil.h
|
||||
|
||||
.\glut_cindex.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_cindex.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_bitmap.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_bitmap.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutbitmap.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_9x15.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_9x15.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutbitmap.h
|
||||
|
||||
.\glut_8x13.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_8x13.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutbitmap.h
|
||||
|
||||
.\glutOverlay.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glutOverlay.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutbitmap.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutstroke.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\WarpWin.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\WarpWin.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpWin.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h
|
||||
|
||||
.\libGlut.LIB: \
|
||||
.\libGlut.dll
|
||||
# Makefile
|
||||
# Created by IBM WorkFrame/2 MakeMake at 12:46:25 on 3 June 2003
|
||||
#
|
||||
# The actions included in this make file are:
|
||||
# Compile::C++ Compiler
|
||||
# Link::Linker
|
||||
# Lib::Import Lib
|
||||
|
||||
.SUFFIXES:
|
||||
|
||||
.SUFFIXES: \
|
||||
.LIB .cpp .dll .obj
|
||||
|
||||
.cpp.obj:
|
||||
@echo " Compile::C++ Compiler "
|
||||
icc.exe /I..\ /I..\X86 /I..\GL /I..\swrast /I..\swrast_setup /Ss /Wcmpcndcnscnvcpydclenuextgeninilanobsordparporppcprorearettrdtruund /Tx /O /Gm /Ge- /G5 /Gf /Gi /Oi /C %s
|
||||
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm}.cpp.obj:
|
||||
@echo " Compile::C++ Compiler "
|
||||
icc.exe /I..\ /I..\X86 /I..\GL /I..\swrast /I..\swrast_setup /Ss /Wcmpcndcnscnvcpydclenuextgeninilanobsordparporppcprorearettrdtruund /Tx /O /Gm /Ge- /G5 /Gf /Gi /Oi /C %s
|
||||
|
||||
.dll.LIB:
|
||||
@echo " Lib::Import Lib "
|
||||
implib.exe %|dpfF.LIB %s
|
||||
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm}.dll.LIB:
|
||||
@echo " Lib::Import Lib "
|
||||
implib.exe %|dpfF.LIB %s
|
||||
|
||||
all: \
|
||||
.\libGlut.LIB
|
||||
|
||||
.\libGlut.dll: \
|
||||
.\os2_winproc.obj \
|
||||
.\WarpWin.obj \
|
||||
.\glutOverlay.obj \
|
||||
.\glut_8x13.obj \
|
||||
.\glut_9x15.obj \
|
||||
.\glut_bitmap.obj \
|
||||
.\glut_cindex.obj \
|
||||
.\glut_cmap.obj \
|
||||
.\glut_cursor.obj \
|
||||
.\glut_event.obj \
|
||||
.\glut_ext.obj \
|
||||
.\glut_fullscrn.obj \
|
||||
.\glut_gamemode.obj \
|
||||
.\glut_get.obj \
|
||||
.\glut_hel10.obj \
|
||||
.\glut_hel12.obj \
|
||||
.\glut_hel18.obj \
|
||||
.\glut_init.obj \
|
||||
.\glut_input.obj \
|
||||
.\glut_key.obj \
|
||||
.\glut_keyctrl.obj \
|
||||
.\glut_keyup.obj \
|
||||
.\glut_mesa.obj \
|
||||
.\glut_modifier.obj \
|
||||
.\glut_roman.obj \
|
||||
.\glut_shapes.obj \
|
||||
.\glut_stroke.obj \
|
||||
.\glut_swap.obj \
|
||||
.\glut_teapot.obj \
|
||||
.\glut_tr24.obj \
|
||||
.\glut_util.obj \
|
||||
.\glut_vidresize.obj \
|
||||
.\glut_warp.obj \
|
||||
.\glut_win.obj \
|
||||
.\glut_winmisc.obj \
|
||||
.\os2_glx.obj \
|
||||
.\os2_menu.obj \
|
||||
..\si-glu\libGLU.lib \
|
||||
..\MesaDll\MesaGL2.lib \
|
||||
..\drv\DrvLoad\MesaDrvLoad.lib \
|
||||
{$(LIB)}libGlut.DEF
|
||||
@echo " Link::Linker "
|
||||
icc.exe @<<
|
||||
/B" /dbgpack /exepack:2 /st:200000 /packd /optfunc"
|
||||
/FelibGlut.dll
|
||||
..\si-glu\libGLU.lib
|
||||
..\MesaDll\MesaGL2.lib
|
||||
..\drv\DrvLoad\MesaDrvLoad.lib
|
||||
libGlut.DEF
|
||||
.\os2_winproc.obj
|
||||
.\WarpWin.obj
|
||||
.\glutOverlay.obj
|
||||
.\glut_8x13.obj
|
||||
.\glut_9x15.obj
|
||||
.\glut_bitmap.obj
|
||||
.\glut_cindex.obj
|
||||
.\glut_cmap.obj
|
||||
.\glut_cursor.obj
|
||||
.\glut_event.obj
|
||||
.\glut_ext.obj
|
||||
.\glut_fullscrn.obj
|
||||
.\glut_gamemode.obj
|
||||
.\glut_get.obj
|
||||
.\glut_hel10.obj
|
||||
.\glut_hel12.obj
|
||||
.\glut_hel18.obj
|
||||
.\glut_init.obj
|
||||
.\glut_input.obj
|
||||
.\glut_key.obj
|
||||
.\glut_keyctrl.obj
|
||||
.\glut_keyup.obj
|
||||
.\glut_mesa.obj
|
||||
.\glut_modifier.obj
|
||||
.\glut_roman.obj
|
||||
.\glut_shapes.obj
|
||||
.\glut_stroke.obj
|
||||
.\glut_swap.obj
|
||||
.\glut_teapot.obj
|
||||
.\glut_tr24.obj
|
||||
.\glut_util.obj
|
||||
.\glut_vidresize.obj
|
||||
.\glut_warp.obj
|
||||
.\glut_win.obj
|
||||
.\glut_winmisc.obj
|
||||
.\os2_glx.obj
|
||||
.\os2_menu.obj
|
||||
<<
|
||||
|
||||
.\os2_winproc.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\os2_winproc.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h \
|
||||
gl\os2mesa.h \
|
||||
gl\gl.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}gl_mangle.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}GL/os2_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}os2_config.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}os2mesadef.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}context.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glapi.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}mtypes.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glheader.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}config.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glapitable.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glthread.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}math/m_matrix.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}Trace/tr_context.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}dd.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}conf.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}GL/os2_config.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}GL/glext.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}Xthreads.h
|
||||
|
||||
.\os2_menu.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\os2_menu.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\os2_glx.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\os2_glx.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
gl\os2mesa.h \
|
||||
gl\gl.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}gl_mangle.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}GL/os2_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}os2_config.h
|
||||
|
||||
.\glut_winmisc.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_winmisc.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_win.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_win.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutos2.h \
|
||||
gl\os2mesa.h \
|
||||
gl\gl.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}gl_mangle.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}GL/os2_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}os2_config.h
|
||||
|
||||
.\glut_warp.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_warp.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_vidresize.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_vidresize.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_util.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_util.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_tr24.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_tr24.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutbitmap.h
|
||||
|
||||
.\glut_teapot.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_teapot.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_swap.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_swap.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_stroke.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_stroke.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutstroke.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_shapes.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_shapes.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_roman.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_roman.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutstroke.h
|
||||
|
||||
.\glut_modifier.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_modifier.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_mesa.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_mesa.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_keyup.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_keyup.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_keyctrl.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_keyctrl.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_key.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_key.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_input.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_input.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_init.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_init.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_hel18.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_hel18.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutbitmap.h
|
||||
|
||||
.\glut_hel12.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_hel12.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutbitmap.h
|
||||
|
||||
.\glut_hel10.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_hel10.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutbitmap.h
|
||||
|
||||
.\glut_get.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_get.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_gamemode.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_gamemode.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_fullscrn.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_fullscrn.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_ext.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_ext.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_event.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_event.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_cursor.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_cursor.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_cmap.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_cmap.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}layerutil.h
|
||||
|
||||
.\glut_cindex.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_cindex.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_bitmap.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_bitmap.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutbitmap.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\glut_9x15.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_9x15.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutbitmap.h
|
||||
|
||||
.\glut_8x13.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glut_8x13.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutbitmap.h
|
||||
|
||||
.\glutOverlay.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\glutOverlay.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutint.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutbitmap.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutstroke.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}glutwin32.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_x11.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}win32_glx.h
|
||||
|
||||
.\WarpWin.obj: \
|
||||
G:\EVGEN\MESA5\src-glut.os2pm\WarpWin.cpp \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpWin.h \
|
||||
{G:\EVGEN\MESA5\src-glut.os2pm;..\;..\X86;..\GL;..\swrast;..\swrast_setup;$(INCLUDE);}WarpGL.h
|
||||
|
||||
.\libGlut.LIB: \
|
||||
.\libGlut.dll
|
||||
|
|
|
@ -1,133 +1,133 @@
|
|||
/***********************************************************
|
||||
* Copyright (C) 1997, Be Inc. All rights reserved.
|
||||
*
|
||||
* FILE: glutOverlay.cpp
|
||||
*
|
||||
* DESCRIPTION: we don't support overlays, so this code is
|
||||
* really simple
|
||||
***********************************************************/
|
||||
|
||||
/***********************************************************
|
||||
* Headers
|
||||
***********************************************************/
|
||||
#include <GL/glut.h>
|
||||
#include "glutint.h"
|
||||
#include "glutbitmap.h"
|
||||
#include "glutstroke.h"
|
||||
|
||||
GLUTAPI void GLUTAPIENTRY
|
||||
glutEstablishOverlay(void)
|
||||
{
|
||||
__glutFatalError("OS2PM lacks overlay support.");
|
||||
}
|
||||
|
||||
GLUTAPI void GLUTAPIENTRY
|
||||
glutUseLayer(GLenum layer) {
|
||||
// ignore
|
||||
}
|
||||
|
||||
GLUTAPI void GLUTAPIENTRY
|
||||
glutRemoveOverlay(void) {
|
||||
// ignore
|
||||
}
|
||||
|
||||
GLUTAPI void GLUTAPIENTRY
|
||||
glutPostOverlayRedisplay(void) {
|
||||
// ignore
|
||||
}
|
||||
|
||||
GLUTAPI void GLUTAPIENTRY
|
||||
glutShowOverlay(void) {
|
||||
// ignore
|
||||
}
|
||||
|
||||
GLUTAPI void GLUTAPIENTRY glutHideOverlay(void)
|
||||
{
|
||||
// ignore
|
||||
}
|
||||
|
||||
int GLUTAPIENTRY
|
||||
glutLayerGet(GLenum param)
|
||||
{
|
||||
// ignore
|
||||
}
|
||||
|
||||
/***********************************************************
|
||||
* Unsupported callbacks
|
||||
***********************************************************/
|
||||
GLUTAPI void GLUTAPIENTRY
|
||||
glutOverlayDisplayFunc(GLUTdisplayCB displayFunc)
|
||||
{
|
||||
}
|
||||
|
||||
GLUTAPI void GLUTAPIENTRY
|
||||
glutSpaceballMotionFunc(GLUTspaceMotionCB spaceMotionFunc)
|
||||
{
|
||||
}
|
||||
|
||||
GLUTAPI void GLUTAPIENTRY
|
||||
glutSpaceballRotateFunc(GLUTspaceRotateCB spaceRotateFunc)
|
||||
{
|
||||
}
|
||||
|
||||
GLUTAPI void GLUTAPIENTRY
|
||||
glutSpaceballButtonFunc(GLUTspaceButtonCB spaceButtonFunc)
|
||||
{
|
||||
}
|
||||
|
||||
GLUTAPI void GLUTAPIENTRY
|
||||
glutButtonBoxFunc(GLUTbuttonBoxCB buttonBoxFunc)
|
||||
{
|
||||
}
|
||||
|
||||
GLUTAPI void GLUTAPIENTRY
|
||||
glutDialsFunc(GLUTdialsCB dialsFunc)
|
||||
{
|
||||
}
|
||||
|
||||
GLUTAPI void GLUTAPIENTRY
|
||||
glutTabletMotionFunc(GLUTtabletMotionCB tabletMotionFunc)
|
||||
{
|
||||
}
|
||||
|
||||
GLUTAPI void GLUTAPIENTRY
|
||||
glutTabletButtonFunc(GLUTtabletButtonCB tabletButtonFunc)
|
||||
{
|
||||
}
|
||||
GLUTAPI void GLUTAPIENTRY
|
||||
glutPostWindowOverlayRedisplay(int win)
|
||||
{ //
|
||||
}
|
||||
|
||||
void GLUTAPIENTRY
|
||||
glutInitDisplayString(const char *string)
|
||||
{ //
|
||||
}
|
||||
void GLUTAPIENTRY
|
||||
glutJoystickFunc(GLUTjoystickCB joystickFunc, int pollInterval)
|
||||
{ //
|
||||
}
|
||||
|
||||
void GLUTAPIENTRY
|
||||
glutForceJoystickFunc(void)
|
||||
{ //
|
||||
}
|
||||
|
||||
|
||||
int GLUTAPIENTRY
|
||||
glutBitmapWidth(GLUTbitmapFont font, int c)
|
||||
{ return 0;
|
||||
}
|
||||
int GLUTAPIENTRY
|
||||
glutBitmapLength(GLUTbitmapFont font, const unsigned char *string)
|
||||
{ //
|
||||
return 0;
|
||||
}
|
||||
int GLUTAPIENTRY
|
||||
glutStrokeWidth(GLUTstrokeFont font, int c)
|
||||
{ return 0;
|
||||
}
|
||||
int GLUTAPIENTRY
|
||||
glutStrokeLength(GLUTstrokeFont font, const unsigned char *string)
|
||||
{ return 0;
|
||||
}
|
||||
/***********************************************************
|
||||
* Copyright (C) 1997, Be Inc. All rights reserved.
|
||||
*
|
||||
* FILE: glutOverlay.cpp
|
||||
*
|
||||
* DESCRIPTION: we don't support overlays, so this code is
|
||||
* really simple
|
||||
***********************************************************/
|
||||
|
||||
/***********************************************************
|
||||
* Headers
|
||||
***********************************************************/
|
||||
#include <GL/glut.h>
|
||||
#include "glutint.h"
|
||||
#include "glutbitmap.h"
|
||||
#include "glutstroke.h"
|
||||
|
||||
GLUTAPI void GLUTAPIENTRY
|
||||
glutEstablishOverlay(void)
|
||||
{
|
||||
__glutFatalError("OS2PM lacks overlay support.");
|
||||
}
|
||||
|
||||
GLUTAPI void GLUTAPIENTRY
|
||||
glutUseLayer(GLenum layer) {
|
||||
// ignore
|
||||
}
|
||||
|
||||
GLUTAPI void GLUTAPIENTRY
|
||||
glutRemoveOverlay(void) {
|
||||
// ignore
|
||||
}
|
||||
|
||||
GLUTAPI void GLUTAPIENTRY
|
||||
glutPostOverlayRedisplay(void) {
|
||||
// ignore
|
||||
}
|
||||
|
||||
GLUTAPI void GLUTAPIENTRY
|
||||
glutShowOverlay(void) {
|
||||
// ignore
|
||||
}
|
||||
|
||||
GLUTAPI void GLUTAPIENTRY glutHideOverlay(void)
|
||||
{
|
||||
// ignore
|
||||
}
|
||||
|
||||
int GLUTAPIENTRY
|
||||
glutLayerGet(GLenum param)
|
||||
{
|
||||
// ignore
|
||||
}
|
||||
|
||||
/***********************************************************
|
||||
* Unsupported callbacks
|
||||
***********************************************************/
|
||||
GLUTAPI void GLUTAPIENTRY
|
||||
glutOverlayDisplayFunc(GLUTdisplayCB displayFunc)
|
||||
{
|
||||
}
|
||||
|
||||
GLUTAPI void GLUTAPIENTRY
|
||||
glutSpaceballMotionFunc(GLUTspaceMotionCB spaceMotionFunc)
|
||||
{
|
||||
}
|
||||
|
||||
GLUTAPI void GLUTAPIENTRY
|
||||
glutSpaceballRotateFunc(GLUTspaceRotateCB spaceRotateFunc)
|
||||
{
|
||||
}
|
||||
|
||||
GLUTAPI void GLUTAPIENTRY
|
||||
glutSpaceballButtonFunc(GLUTspaceButtonCB spaceButtonFunc)
|
||||
{
|
||||
}
|
||||
|
||||
GLUTAPI void GLUTAPIENTRY
|
||||
glutButtonBoxFunc(GLUTbuttonBoxCB buttonBoxFunc)
|
||||
{
|
||||
}
|
||||
|
||||
GLUTAPI void GLUTAPIENTRY
|
||||
glutDialsFunc(GLUTdialsCB dialsFunc)
|
||||
{
|
||||
}
|
||||
|
||||
GLUTAPI void GLUTAPIENTRY
|
||||
glutTabletMotionFunc(GLUTtabletMotionCB tabletMotionFunc)
|
||||
{
|
||||
}
|
||||
|
||||
GLUTAPI void GLUTAPIENTRY
|
||||
glutTabletButtonFunc(GLUTtabletButtonCB tabletButtonFunc)
|
||||
{
|
||||
}
|
||||
GLUTAPI void GLUTAPIENTRY
|
||||
glutPostWindowOverlayRedisplay(int win)
|
||||
{ //
|
||||
}
|
||||
|
||||
void GLUTAPIENTRY
|
||||
glutInitDisplayString(const char *string)
|
||||
{ //
|
||||
}
|
||||
void GLUTAPIENTRY
|
||||
glutJoystickFunc(GLUTjoystickCB joystickFunc, int pollInterval)
|
||||
{ //
|
||||
}
|
||||
|
||||
void GLUTAPIENTRY
|
||||
glutForceJoystickFunc(void)
|
||||
{ //
|
||||
}
|
||||
|
||||
|
||||
int GLUTAPIENTRY
|
||||
glutBitmapWidth(GLUTbitmapFont font, int c)
|
||||
{ return 0;
|
||||
}
|
||||
int GLUTAPIENTRY
|
||||
glutBitmapLength(GLUTbitmapFont font, const unsigned char *string)
|
||||
{ //
|
||||
return 0;
|
||||
}
|
||||
int GLUTAPIENTRY
|
||||
glutStrokeWidth(GLUTstrokeFont font, int c)
|
||||
{ return 0;
|
||||
}
|
||||
int GLUTAPIENTRY
|
||||
glutStrokeLength(GLUTstrokeFont font, const unsigned char *string)
|
||||
{ return 0;
|
||||
}
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,57 +1,57 @@
|
|||
|
||||
/* Copyright (c) Mark J. Kilgard, 1994. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include "glutint.h"
|
||||
#include "glutbitmap.h"
|
||||
|
||||
void GLUTAPIENTRY
|
||||
glutBitmapCharacter(GLUTbitmapFont font, int c)
|
||||
{
|
||||
const BitmapCharRec *ch;
|
||||
BitmapFontPtr fontinfo;
|
||||
GLint swapbytes, lsbfirst, rowlength;
|
||||
GLint skiprows, skippixels, alignment;
|
||||
|
||||
#if defined(_WIN32)
|
||||
fontinfo = (BitmapFontPtr) __glutFont(font);
|
||||
#else
|
||||
fontinfo = (BitmapFontPtr) font;
|
||||
#endif
|
||||
|
||||
if (c < fontinfo->first ||
|
||||
c >= fontinfo->first + fontinfo->num_chars)
|
||||
return;
|
||||
ch = fontinfo->ch[c - fontinfo->first];
|
||||
if (ch) {
|
||||
/* Save current modes. */
|
||||
glGetIntegerv(GL_UNPACK_SWAP_BYTES, &swapbytes);
|
||||
glGetIntegerv(GL_UNPACK_LSB_FIRST, &lsbfirst);
|
||||
glGetIntegerv(GL_UNPACK_ROW_LENGTH, &rowlength);
|
||||
glGetIntegerv(GL_UNPACK_SKIP_ROWS, &skiprows);
|
||||
glGetIntegerv(GL_UNPACK_SKIP_PIXELS, &skippixels);
|
||||
glGetIntegerv(GL_UNPACK_ALIGNMENT, &alignment);
|
||||
/* Little endian machines (DEC Alpha for example) could
|
||||
benefit from setting GL_UNPACK_LSB_FIRST to GL_TRUE
|
||||
instead of GL_FALSE, but this would require changing the
|
||||
generated bitmaps too. */
|
||||
glPixelStorei(GL_UNPACK_SWAP_BYTES, GL_FALSE);
|
||||
glPixelStorei(GL_UNPACK_LSB_FIRST, GL_FALSE);
|
||||
glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
|
||||
glPixelStorei(GL_UNPACK_SKIP_ROWS, 0);
|
||||
glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0);
|
||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
||||
glBitmap(ch->width, ch->height, ch->xorig, ch->yorig,
|
||||
ch->advance, 0, ch->bitmap);
|
||||
/* Restore saved modes. */
|
||||
glPixelStorei(GL_UNPACK_SWAP_BYTES, swapbytes);
|
||||
glPixelStorei(GL_UNPACK_LSB_FIRST, lsbfirst);
|
||||
glPixelStorei(GL_UNPACK_ROW_LENGTH, rowlength);
|
||||
glPixelStorei(GL_UNPACK_SKIP_ROWS, skiprows);
|
||||
glPixelStorei(GL_UNPACK_SKIP_PIXELS, skippixels);
|
||||
glPixelStorei(GL_UNPACK_ALIGNMENT, alignment);
|
||||
}
|
||||
}
|
||||
|
||||
/* Copyright (c) Mark J. Kilgard, 1994. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include "glutint.h"
|
||||
#include "glutbitmap.h"
|
||||
|
||||
void GLUTAPIENTRY
|
||||
glutBitmapCharacter(GLUTbitmapFont font, int c)
|
||||
{
|
||||
const BitmapCharRec *ch;
|
||||
BitmapFontPtr fontinfo;
|
||||
GLint swapbytes, lsbfirst, rowlength;
|
||||
GLint skiprows, skippixels, alignment;
|
||||
|
||||
#if defined(_WIN32)
|
||||
fontinfo = (BitmapFontPtr) __glutFont(font);
|
||||
#else
|
||||
fontinfo = (BitmapFontPtr) font;
|
||||
#endif
|
||||
|
||||
if (c < fontinfo->first ||
|
||||
c >= fontinfo->first + fontinfo->num_chars)
|
||||
return;
|
||||
ch = fontinfo->ch[c - fontinfo->first];
|
||||
if (ch) {
|
||||
/* Save current modes. */
|
||||
glGetIntegerv(GL_UNPACK_SWAP_BYTES, &swapbytes);
|
||||
glGetIntegerv(GL_UNPACK_LSB_FIRST, &lsbfirst);
|
||||
glGetIntegerv(GL_UNPACK_ROW_LENGTH, &rowlength);
|
||||
glGetIntegerv(GL_UNPACK_SKIP_ROWS, &skiprows);
|
||||
glGetIntegerv(GL_UNPACK_SKIP_PIXELS, &skippixels);
|
||||
glGetIntegerv(GL_UNPACK_ALIGNMENT, &alignment);
|
||||
/* Little endian machines (DEC Alpha for example) could
|
||||
benefit from setting GL_UNPACK_LSB_FIRST to GL_TRUE
|
||||
instead of GL_FALSE, but this would require changing the
|
||||
generated bitmaps too. */
|
||||
glPixelStorei(GL_UNPACK_SWAP_BYTES, GL_FALSE);
|
||||
glPixelStorei(GL_UNPACK_LSB_FIRST, GL_FALSE);
|
||||
glPixelStorei(GL_UNPACK_ROW_LENGTH, 0);
|
||||
glPixelStorei(GL_UNPACK_SKIP_ROWS, 0);
|
||||
glPixelStorei(GL_UNPACK_SKIP_PIXELS, 0);
|
||||
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
|
||||
glBitmap(ch->width, ch->height, ch->xorig, ch->yorig,
|
||||
ch->advance, 0, ch->bitmap);
|
||||
/* Restore saved modes. */
|
||||
glPixelStorei(GL_UNPACK_SWAP_BYTES, swapbytes);
|
||||
glPixelStorei(GL_UNPACK_LSB_FIRST, lsbfirst);
|
||||
glPixelStorei(GL_UNPACK_ROW_LENGTH, rowlength);
|
||||
glPixelStorei(GL_UNPACK_SKIP_ROWS, skiprows);
|
||||
glPixelStorei(GL_UNPACK_SKIP_PIXELS, skippixels);
|
||||
glPixelStorei(GL_UNPACK_ALIGNMENT, alignment);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,399 +1,399 @@
|
|||
|
||||
/* Copyright (c) Mark J. Kilgard, 1994, 1996, 1997. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#ifdef __VMS
|
||||
//EK#include <GL/vms_x_fix.h>
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h> /* SunOS multithreaded assert() needs <stdio.h>. Lame. */
|
||||
#include <assert.h>
|
||||
#if !defined(_WIN32) && !defined(__OS2__)
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xutil.h>
|
||||
#include <X11/Xatom.h> /* for XA_RGB_DEFAULT_MAP atom */
|
||||
#if defined(__vms)
|
||||
#include <Xmu/StdCmap.h> /* for XmuLookupStandardColormap */
|
||||
#else
|
||||
#include <X11/Xmu/StdCmap.h> /* for XmuLookupStandardColormap */
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* SGI optimization introduced in IRIX 6.3 to avoid X server
|
||||
round trips for interning common X atoms. */
|
||||
#if defined(_SGI_EXTRA_PREDEFINES) && !defined(NO_FAST_ATOMS)
|
||||
#include <X11/SGIFastAtom.h>
|
||||
#else
|
||||
#define XSGIFastInternAtom(dpy,string,fast_name,how) XInternAtom(dpy,string,how)
|
||||
#endif
|
||||
|
||||
#include "glutint.h"
|
||||
#include "layerutil.h"
|
||||
|
||||
GLUTcolormap *__glutColormapList = NULL;
|
||||
|
||||
GLUTcolormap *
|
||||
__glutAssociateNewColormap(XVisualInfo * vis)
|
||||
{
|
||||
GLUTcolormap *cmap;
|
||||
int transparentPixel, i;
|
||||
unsigned long pixels[255];
|
||||
|
||||
cmap = (GLUTcolormap *) malloc(sizeof(GLUTcolormap));
|
||||
if (!cmap)
|
||||
__glutFatalError("out of memory.");
|
||||
#if defined(_WIN32) || defined(__OS2__)
|
||||
pixels[0] = 0; /* avoid compilation warnings on win32 */
|
||||
cmap->visual = 0;
|
||||
cmap->size = 256; /* always assume 256 on Win32 */
|
||||
#else
|
||||
cmap->visual = vis->visual;
|
||||
cmap->size = vis->visual->map_entries;
|
||||
#endif
|
||||
cmap->refcnt = 1;
|
||||
cmap->cells = (GLUTcolorcell *)
|
||||
malloc(sizeof(GLUTcolorcell) * cmap->size);
|
||||
if (!cmap->cells)
|
||||
__glutFatalError("out of memory.");
|
||||
/* make all color cell entries be invalid */
|
||||
for (i = cmap->size - 1; i >= 0; i--) {
|
||||
cmap->cells[i].component[GLUT_RED] = -1.0;
|
||||
cmap->cells[i].component[GLUT_GREEN] = -1.0;
|
||||
cmap->cells[i].component[GLUT_BLUE] = -1.0;
|
||||
}
|
||||
transparentPixel = __glutGetTransparentPixel(__glutDisplay, vis);
|
||||
if (transparentPixel == -1 || transparentPixel >= cmap->size) {
|
||||
|
||||
/* If there is no transparent pixel or if the transparent
|
||||
pixel is outside the range of valid colormap cells (HP
|
||||
can implement their overlays this smart way since their
|
||||
transparent pixel is 255), we can AllocAll the colormap.
|
||||
See note below. */
|
||||
|
||||
cmap->cmap = XCreateColormap(__glutDisplay,
|
||||
__glutRoot, cmap->visual, AllocAll);
|
||||
} else {
|
||||
|
||||
/* On machines where zero (or some other value in the range
|
||||
of 0 through map_entries-1), BadAlloc may be generated
|
||||
when an AllocAll overlay colormap is allocated since the
|
||||
transparent pixel precludes all the cells in the colormap
|
||||
being allocated (the transparent pixel is pre-allocated).
|
||||
So in this case, use XAllocColorCells to allocate
|
||||
map_entries-1 pixels (that is, all but the transparent
|
||||
pixel. */
|
||||
|
||||
#if defined(_WIN32) || defined(__OS2__)
|
||||
cmap->cmap = XCreateColormap(__glutDisplay,
|
||||
__glutRoot, 0, AllocNone);
|
||||
#else
|
||||
cmap->cmap = XCreateColormap(__glutDisplay,
|
||||
__glutRoot, vis->visual, AllocNone);
|
||||
XAllocColorCells(__glutDisplay, cmap->cmap, False, 0, 0,
|
||||
pixels, cmap->size - 1);
|
||||
#endif
|
||||
}
|
||||
cmap->next = __glutColormapList;
|
||||
__glutColormapList = cmap;
|
||||
return cmap;
|
||||
}
|
||||
|
||||
static GLUTcolormap *
|
||||
associateColormap(XVisualInfo * vis)
|
||||
{
|
||||
#if !defined(_WIN32) && !defined(__OS2__)
|
||||
GLUTcolormap *cmap = __glutColormapList;
|
||||
|
||||
while (cmap != NULL) {
|
||||
/* Play safe: compare visual IDs, not Visual*'s. */
|
||||
if (cmap->visual->visualid == vis->visual->visualid) {
|
||||
/* Already have created colormap for the visual. */
|
||||
cmap->refcnt++;
|
||||
return cmap;
|
||||
}
|
||||
cmap = cmap->next;
|
||||
}
|
||||
#endif
|
||||
return __glutAssociateNewColormap(vis);
|
||||
}
|
||||
|
||||
void
|
||||
__glutSetupColormap(XVisualInfo * vi, GLUTcolormap ** colormap, Colormap * cmap)
|
||||
{
|
||||
#if defined(_WIN32) || defined(__OS2__)
|
||||
if (vi->dwFlags & PFD_NEED_PALETTE || vi->iPixelType == PFD_TYPE_COLORINDEX) {
|
||||
*colormap = associateColormap(vi);
|
||||
*cmap = (*colormap)->cmap;
|
||||
} else {
|
||||
*colormap = NULL;
|
||||
*cmap = 0;
|
||||
}
|
||||
#else
|
||||
Status status;
|
||||
XStandardColormap *standardCmaps;
|
||||
int i, numCmaps;
|
||||
static Atom hpColorRecoveryAtom = -1;
|
||||
int isRGB, visualClass, rc;
|
||||
|
||||
#if defined(__cplusplus) || defined(c_plusplus)
|
||||
visualClass = vi->c_class;
|
||||
#else
|
||||
visualClass = vi->class;
|
||||
#endif
|
||||
switch (visualClass) {
|
||||
case PseudoColor:
|
||||
/* Mesa might return a PseudoColor visual for RGB mode. */
|
||||
rc = glXGetConfig(__glutDisplay, vi, GLX_RGBA, &isRGB);
|
||||
if (rc == 0 && isRGB) {
|
||||
/* Must be Mesa. */
|
||||
*colormap = NULL;
|
||||
if (MaxCmapsOfScreen(DefaultScreenOfDisplay(__glutDisplay)) == 1
|
||||
&& vi->visual == DefaultVisual(__glutDisplay, __glutScreen)) {
|
||||
char *privateCmap = getenv("MESA_PRIVATE_CMAP");
|
||||
|
||||
if (privateCmap) {
|
||||
/* User doesn't want to share colormaps. */
|
||||
*cmap = XCreateColormap(__glutDisplay, __glutRoot,
|
||||
vi->visual, AllocNone);
|
||||
} else {
|
||||
/* Share the root colormap. */
|
||||
*cmap = DefaultColormap(__glutDisplay, __glutScreen);
|
||||
}
|
||||
} else {
|
||||
/* Get our own PseudoColor colormap. */
|
||||
*cmap = XCreateColormap(__glutDisplay, __glutRoot,
|
||||
vi->visual, AllocNone);
|
||||
}
|
||||
} else {
|
||||
/* CI mode, real GLX never returns a PseudoColor visual
|
||||
for RGB mode. */
|
||||
*colormap = associateColormap(vi);
|
||||
*cmap = (*colormap)->cmap;
|
||||
}
|
||||
break;
|
||||
case TrueColor:
|
||||
case DirectColor:
|
||||
*colormap = NULL; /* NULL if RGBA */
|
||||
|
||||
/* Hewlett-Packard supports a feature called "HP Color
|
||||
Recovery". Mesa has code to use HP Color Recovery. For
|
||||
Mesa to use this feature, the atom
|
||||
_HP_RGB_SMOOTH_MAP_LIST must be defined on the root
|
||||
window AND the colormap obtainable by XGetRGBColormaps
|
||||
for that atom must be set on the window. If that
|
||||
colormap is not set, the output will look stripy. */
|
||||
|
||||
if (hpColorRecoveryAtom == -1) {
|
||||
char *xvendor;
|
||||
|
||||
#define VENDOR_HP "Hewlett-Packard"
|
||||
|
||||
/* Only makes sense to make XInternAtom round-trip if we
|
||||
know that we are connected to an HP X server. */
|
||||
xvendor = ServerVendor(__glutDisplay);
|
||||
if (!strncmp(xvendor, VENDOR_HP, sizeof(VENDOR_HP) - 1)) {
|
||||
hpColorRecoveryAtom = XInternAtom(__glutDisplay, "_HP_RGB_SMOOTH_MAP_LIST", True);
|
||||
} else {
|
||||
hpColorRecoveryAtom = None;
|
||||
}
|
||||
}
|
||||
if (hpColorRecoveryAtom != None) {
|
||||
status = XGetRGBColormaps(__glutDisplay, __glutRoot,
|
||||
&standardCmaps, &numCmaps, hpColorRecoveryAtom);
|
||||
if (status == 1) {
|
||||
for (i = 0; i < numCmaps; i++) {
|
||||
if (standardCmaps[i].visualid == vi->visualid) {
|
||||
*cmap = standardCmaps[i].colormap;
|
||||
XFree(standardCmaps);
|
||||
return;
|
||||
}
|
||||
}
|
||||
XFree(standardCmaps);
|
||||
}
|
||||
}
|
||||
#ifndef SOLARIS_2_4_BUG
|
||||
/* Solaris 2.4 and 2.5 have a bug in their
|
||||
XmuLookupStandardColormap implementations. Please
|
||||
compile your Solaris 2.4 or 2.5 version of GLUT with
|
||||
-DSOLARIS_2_4_BUG to work around this bug. The symptom
|
||||
of the bug is that programs will get a BadMatch error
|
||||
from X_CreateWindow when creating a GLUT window because
|
||||
Solaris 2.4 and 2.5 create a corrupted RGB_DEFAULT_MAP
|
||||
property. Note that this workaround prevents Colormap
|
||||
sharing between applications, perhaps leading
|
||||
unnecessary colormap installations or colormap flashing.
|
||||
Sun fixed this bug in Solaris 2.6. */
|
||||
status = XmuLookupStandardColormap(__glutDisplay,
|
||||
vi->screen, vi->visualid, vi->depth, XA_RGB_DEFAULT_MAP,
|
||||
/* replace */ False, /* retain */ True);
|
||||
if (status == 1) {
|
||||
status = XGetRGBColormaps(__glutDisplay, __glutRoot,
|
||||
&standardCmaps, &numCmaps, XA_RGB_DEFAULT_MAP);
|
||||
if (status == 1) {
|
||||
for (i = 0; i < numCmaps; i++) {
|
||||
if (standardCmaps[i].visualid == vi->visualid) {
|
||||
*cmap = standardCmaps[i].colormap;
|
||||
XFree(standardCmaps);
|
||||
return;
|
||||
}
|
||||
}
|
||||
XFree(standardCmaps);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
/* If no standard colormap but TrueColor, just make a
|
||||
private one. */
|
||||
/* XXX Should do a better job of internal sharing for
|
||||
privately allocated TrueColor colormaps. */
|
||||
/* XXX DirectColor probably needs ramps hand initialized! */
|
||||
*cmap = XCreateColormap(__glutDisplay, __glutRoot,
|
||||
vi->visual, AllocNone);
|
||||
break;
|
||||
case StaticColor:
|
||||
case StaticGray:
|
||||
case GrayScale:
|
||||
/* Mesa supports these visuals */
|
||||
*colormap = NULL;
|
||||
*cmap = XCreateColormap(__glutDisplay, __glutRoot,
|
||||
vi->visual, AllocNone);
|
||||
break;
|
||||
default:
|
||||
__glutFatalError(
|
||||
"could not allocate colormap for visual type: %d.",
|
||||
visualClass);
|
||||
}
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
|
||||
#if !defined(_WIN32) && !defined(__OS2__)
|
||||
static int
|
||||
findColormaps(GLUTwindow * window,
|
||||
Window * winlist, Colormap * cmaplist, int num, int max)
|
||||
{
|
||||
GLUTwindow *child;
|
||||
int i;
|
||||
|
||||
/* Do not allow more entries that maximum number of
|
||||
colormaps! */
|
||||
if (num >= max)
|
||||
return num;
|
||||
/* Is cmap for this window already on the list? */
|
||||
for (i = 0; i < num; i++) {
|
||||
if (cmaplist[i] == window->cmap)
|
||||
goto normalColormapAlreadyListed;
|
||||
}
|
||||
/* Not found on the list; add colormap and window. */
|
||||
winlist[num] = window->win;
|
||||
cmaplist[num] = window->cmap;
|
||||
num++;
|
||||
|
||||
normalColormapAlreadyListed:
|
||||
|
||||
/* Repeat above but for the overlay colormap if there one. */
|
||||
if (window->overlay) {
|
||||
if (num >= max)
|
||||
return num;
|
||||
for (i = 0; i < num; i++) {
|
||||
if (cmaplist[i] == window->overlay->cmap)
|
||||
goto overlayColormapAlreadyListed;
|
||||
}
|
||||
winlist[num] = window->overlay->win;
|
||||
cmaplist[num] = window->overlay->cmap;
|
||||
num++;
|
||||
}
|
||||
overlayColormapAlreadyListed:
|
||||
|
||||
/* Recursively search children. */
|
||||
child = window->children;
|
||||
while (child) {
|
||||
num = findColormaps(child, winlist, cmaplist, num, max);
|
||||
child = child->siblings;
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
void
|
||||
__glutEstablishColormapsProperty(GLUTwindow * window)
|
||||
{
|
||||
/* this routine is strictly X. Win32 doesn't need to do
|
||||
anything of this sort (but has to do other wacky stuff
|
||||
later). */
|
||||
static Atom wmColormapWindows = None;
|
||||
Window *winlist;
|
||||
Colormap *cmaplist;
|
||||
Status status;
|
||||
int maxcmaps, num;
|
||||
|
||||
assert(!window->parent);
|
||||
maxcmaps = MaxCmapsOfScreen(ScreenOfDisplay(__glutDisplay,
|
||||
__glutScreen));
|
||||
/* For portability reasons we don't use alloca for winlist
|
||||
and cmaplist, but we could. */
|
||||
winlist = (Window *) malloc(maxcmaps * sizeof(Window));
|
||||
cmaplist = (Colormap *) malloc(maxcmaps * sizeof(Colormap));
|
||||
num = findColormaps(window, winlist, cmaplist, 0, maxcmaps);
|
||||
if (num < 2) {
|
||||
/* Property no longer needed; remove it. */
|
||||
wmColormapWindows = XSGIFastInternAtom(__glutDisplay,
|
||||
"WM_COLORMAP_WINDOWS", SGI_XA_WM_COLORMAP_WINDOWS, False);
|
||||
if (wmColormapWindows == None) {
|
||||
__glutWarning("Could not intern X atom for WM_COLORMAP_WINDOWS.");
|
||||
return;
|
||||
}
|
||||
XDeleteProperty(__glutDisplay, window->win, wmColormapWindows);
|
||||
} else {
|
||||
status = XSetWMColormapWindows(__glutDisplay, window->win,
|
||||
winlist, num);
|
||||
/* XSetWMColormapWindows should always work unless the
|
||||
WM_COLORMAP_WINDOWS property cannot be intern'ed. We
|
||||
check to be safe. */
|
||||
if (status == False)
|
||||
__glutFatalError("XSetWMColormapWindows returned False.");
|
||||
}
|
||||
/* For portability reasons we don't use alloca for winlist
|
||||
and cmaplist, but we could. */
|
||||
free(winlist);
|
||||
free(cmaplist);
|
||||
}
|
||||
|
||||
GLUTwindow *
|
||||
__glutToplevelOf(GLUTwindow * window)
|
||||
{
|
||||
while (window->parent) {
|
||||
window = window->parent;
|
||||
}
|
||||
return window;
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
__glutFreeColormap(GLUTcolormap * cmap)
|
||||
{
|
||||
GLUTcolormap *cur, **prev;
|
||||
|
||||
cmap->refcnt--;
|
||||
if (cmap->refcnt == 0) {
|
||||
/* remove from colormap list */
|
||||
cur = __glutColormapList;
|
||||
prev = &__glutColormapList;
|
||||
while (cur) {
|
||||
if (cur == cmap) {
|
||||
*prev = cmap->next;
|
||||
break;
|
||||
}
|
||||
prev = &(cur->next);
|
||||
cur = cur->next;
|
||||
}
|
||||
/* actually free colormap */
|
||||
XFreeColormap(__glutDisplay, cmap->cmap);
|
||||
free(cmap->cells);
|
||||
free(cmap);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/* Copyright (c) Mark J. Kilgard, 1994, 1996, 1997. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#ifdef __VMS
|
||||
//EK#include <GL/vms_x_fix.h>
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h> /* SunOS multithreaded assert() needs <stdio.h>. Lame. */
|
||||
#include <assert.h>
|
||||
#if !defined(_WIN32) && !defined(__OS2__)
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xutil.h>
|
||||
#include <X11/Xatom.h> /* for XA_RGB_DEFAULT_MAP atom */
|
||||
#if defined(__vms)
|
||||
#include <Xmu/StdCmap.h> /* for XmuLookupStandardColormap */
|
||||
#else
|
||||
#include <X11/Xmu/StdCmap.h> /* for XmuLookupStandardColormap */
|
||||
#endif
|
||||
#endif
|
||||
|
||||
/* SGI optimization introduced in IRIX 6.3 to avoid X server
|
||||
round trips for interning common X atoms. */
|
||||
#if defined(_SGI_EXTRA_PREDEFINES) && !defined(NO_FAST_ATOMS)
|
||||
#include <X11/SGIFastAtom.h>
|
||||
#else
|
||||
#define XSGIFastInternAtom(dpy,string,fast_name,how) XInternAtom(dpy,string,how)
|
||||
#endif
|
||||
|
||||
#include "glutint.h"
|
||||
#include "layerutil.h"
|
||||
|
||||
GLUTcolormap *__glutColormapList = NULL;
|
||||
|
||||
GLUTcolormap *
|
||||
__glutAssociateNewColormap(XVisualInfo * vis)
|
||||
{
|
||||
GLUTcolormap *cmap;
|
||||
int transparentPixel, i;
|
||||
unsigned long pixels[255];
|
||||
|
||||
cmap = (GLUTcolormap *) malloc(sizeof(GLUTcolormap));
|
||||
if (!cmap)
|
||||
__glutFatalError("out of memory.");
|
||||
#if defined(_WIN32) || defined(__OS2__)
|
||||
pixels[0] = 0; /* avoid compilation warnings on win32 */
|
||||
cmap->visual = 0;
|
||||
cmap->size = 256; /* always assume 256 on Win32 */
|
||||
#else
|
||||
cmap->visual = vis->visual;
|
||||
cmap->size = vis->visual->map_entries;
|
||||
#endif
|
||||
cmap->refcnt = 1;
|
||||
cmap->cells = (GLUTcolorcell *)
|
||||
malloc(sizeof(GLUTcolorcell) * cmap->size);
|
||||
if (!cmap->cells)
|
||||
__glutFatalError("out of memory.");
|
||||
/* make all color cell entries be invalid */
|
||||
for (i = cmap->size - 1; i >= 0; i--) {
|
||||
cmap->cells[i].component[GLUT_RED] = -1.0;
|
||||
cmap->cells[i].component[GLUT_GREEN] = -1.0;
|
||||
cmap->cells[i].component[GLUT_BLUE] = -1.0;
|
||||
}
|
||||
transparentPixel = __glutGetTransparentPixel(__glutDisplay, vis);
|
||||
if (transparentPixel == -1 || transparentPixel >= cmap->size) {
|
||||
|
||||
/* If there is no transparent pixel or if the transparent
|
||||
pixel is outside the range of valid colormap cells (HP
|
||||
can implement their overlays this smart way since their
|
||||
transparent pixel is 255), we can AllocAll the colormap.
|
||||
See note below. */
|
||||
|
||||
cmap->cmap = XCreateColormap(__glutDisplay,
|
||||
__glutRoot, cmap->visual, AllocAll);
|
||||
} else {
|
||||
|
||||
/* On machines where zero (or some other value in the range
|
||||
of 0 through map_entries-1), BadAlloc may be generated
|
||||
when an AllocAll overlay colormap is allocated since the
|
||||
transparent pixel precludes all the cells in the colormap
|
||||
being allocated (the transparent pixel is pre-allocated).
|
||||
So in this case, use XAllocColorCells to allocate
|
||||
map_entries-1 pixels (that is, all but the transparent
|
||||
pixel. */
|
||||
|
||||
#if defined(_WIN32) || defined(__OS2__)
|
||||
cmap->cmap = XCreateColormap(__glutDisplay,
|
||||
__glutRoot, 0, AllocNone);
|
||||
#else
|
||||
cmap->cmap = XCreateColormap(__glutDisplay,
|
||||
__glutRoot, vis->visual, AllocNone);
|
||||
XAllocColorCells(__glutDisplay, cmap->cmap, False, 0, 0,
|
||||
pixels, cmap->size - 1);
|
||||
#endif
|
||||
}
|
||||
cmap->next = __glutColormapList;
|
||||
__glutColormapList = cmap;
|
||||
return cmap;
|
||||
}
|
||||
|
||||
static GLUTcolormap *
|
||||
associateColormap(XVisualInfo * vis)
|
||||
{
|
||||
#if !defined(_WIN32) && !defined(__OS2__)
|
||||
GLUTcolormap *cmap = __glutColormapList;
|
||||
|
||||
while (cmap != NULL) {
|
||||
/* Play safe: compare visual IDs, not Visual*'s. */
|
||||
if (cmap->visual->visualid == vis->visual->visualid) {
|
||||
/* Already have created colormap for the visual. */
|
||||
cmap->refcnt++;
|
||||
return cmap;
|
||||
}
|
||||
cmap = cmap->next;
|
||||
}
|
||||
#endif
|
||||
return __glutAssociateNewColormap(vis);
|
||||
}
|
||||
|
||||
void
|
||||
__glutSetupColormap(XVisualInfo * vi, GLUTcolormap ** colormap, Colormap * cmap)
|
||||
{
|
||||
#if defined(_WIN32) || defined(__OS2__)
|
||||
if (vi->dwFlags & PFD_NEED_PALETTE || vi->iPixelType == PFD_TYPE_COLORINDEX) {
|
||||
*colormap = associateColormap(vi);
|
||||
*cmap = (*colormap)->cmap;
|
||||
} else {
|
||||
*colormap = NULL;
|
||||
*cmap = 0;
|
||||
}
|
||||
#else
|
||||
Status status;
|
||||
XStandardColormap *standardCmaps;
|
||||
int i, numCmaps;
|
||||
static Atom hpColorRecoveryAtom = -1;
|
||||
int isRGB, visualClass, rc;
|
||||
|
||||
#if defined(__cplusplus) || defined(c_plusplus)
|
||||
visualClass = vi->c_class;
|
||||
#else
|
||||
visualClass = vi->class;
|
||||
#endif
|
||||
switch (visualClass) {
|
||||
case PseudoColor:
|
||||
/* Mesa might return a PseudoColor visual for RGB mode. */
|
||||
rc = glXGetConfig(__glutDisplay, vi, GLX_RGBA, &isRGB);
|
||||
if (rc == 0 && isRGB) {
|
||||
/* Must be Mesa. */
|
||||
*colormap = NULL;
|
||||
if (MaxCmapsOfScreen(DefaultScreenOfDisplay(__glutDisplay)) == 1
|
||||
&& vi->visual == DefaultVisual(__glutDisplay, __glutScreen)) {
|
||||
char *privateCmap = getenv("MESA_PRIVATE_CMAP");
|
||||
|
||||
if (privateCmap) {
|
||||
/* User doesn't want to share colormaps. */
|
||||
*cmap = XCreateColormap(__glutDisplay, __glutRoot,
|
||||
vi->visual, AllocNone);
|
||||
} else {
|
||||
/* Share the root colormap. */
|
||||
*cmap = DefaultColormap(__glutDisplay, __glutScreen);
|
||||
}
|
||||
} else {
|
||||
/* Get our own PseudoColor colormap. */
|
||||
*cmap = XCreateColormap(__glutDisplay, __glutRoot,
|
||||
vi->visual, AllocNone);
|
||||
}
|
||||
} else {
|
||||
/* CI mode, real GLX never returns a PseudoColor visual
|
||||
for RGB mode. */
|
||||
*colormap = associateColormap(vi);
|
||||
*cmap = (*colormap)->cmap;
|
||||
}
|
||||
break;
|
||||
case TrueColor:
|
||||
case DirectColor:
|
||||
*colormap = NULL; /* NULL if RGBA */
|
||||
|
||||
/* Hewlett-Packard supports a feature called "HP Color
|
||||
Recovery". Mesa has code to use HP Color Recovery. For
|
||||
Mesa to use this feature, the atom
|
||||
_HP_RGB_SMOOTH_MAP_LIST must be defined on the root
|
||||
window AND the colormap obtainable by XGetRGBColormaps
|
||||
for that atom must be set on the window. If that
|
||||
colormap is not set, the output will look stripy. */
|
||||
|
||||
if (hpColorRecoveryAtom == -1) {
|
||||
char *xvendor;
|
||||
|
||||
#define VENDOR_HP "Hewlett-Packard"
|
||||
|
||||
/* Only makes sense to make XInternAtom round-trip if we
|
||||
know that we are connected to an HP X server. */
|
||||
xvendor = ServerVendor(__glutDisplay);
|
||||
if (!strncmp(xvendor, VENDOR_HP, sizeof(VENDOR_HP) - 1)) {
|
||||
hpColorRecoveryAtom = XInternAtom(__glutDisplay, "_HP_RGB_SMOOTH_MAP_LIST", True);
|
||||
} else {
|
||||
hpColorRecoveryAtom = None;
|
||||
}
|
||||
}
|
||||
if (hpColorRecoveryAtom != None) {
|
||||
status = XGetRGBColormaps(__glutDisplay, __glutRoot,
|
||||
&standardCmaps, &numCmaps, hpColorRecoveryAtom);
|
||||
if (status == 1) {
|
||||
for (i = 0; i < numCmaps; i++) {
|
||||
if (standardCmaps[i].visualid == vi->visualid) {
|
||||
*cmap = standardCmaps[i].colormap;
|
||||
XFree(standardCmaps);
|
||||
return;
|
||||
}
|
||||
}
|
||||
XFree(standardCmaps);
|
||||
}
|
||||
}
|
||||
#ifndef SOLARIS_2_4_BUG
|
||||
/* Solaris 2.4 and 2.5 have a bug in their
|
||||
XmuLookupStandardColormap implementations. Please
|
||||
compile your Solaris 2.4 or 2.5 version of GLUT with
|
||||
-DSOLARIS_2_4_BUG to work around this bug. The symptom
|
||||
of the bug is that programs will get a BadMatch error
|
||||
from X_CreateWindow when creating a GLUT window because
|
||||
Solaris 2.4 and 2.5 create a corrupted RGB_DEFAULT_MAP
|
||||
property. Note that this workaround prevents Colormap
|
||||
sharing between applications, perhaps leading
|
||||
unnecessary colormap installations or colormap flashing.
|
||||
Sun fixed this bug in Solaris 2.6. */
|
||||
status = XmuLookupStandardColormap(__glutDisplay,
|
||||
vi->screen, vi->visualid, vi->depth, XA_RGB_DEFAULT_MAP,
|
||||
/* replace */ False, /* retain */ True);
|
||||
if (status == 1) {
|
||||
status = XGetRGBColormaps(__glutDisplay, __glutRoot,
|
||||
&standardCmaps, &numCmaps, XA_RGB_DEFAULT_MAP);
|
||||
if (status == 1) {
|
||||
for (i = 0; i < numCmaps; i++) {
|
||||
if (standardCmaps[i].visualid == vi->visualid) {
|
||||
*cmap = standardCmaps[i].colormap;
|
||||
XFree(standardCmaps);
|
||||
return;
|
||||
}
|
||||
}
|
||||
XFree(standardCmaps);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
/* If no standard colormap but TrueColor, just make a
|
||||
private one. */
|
||||
/* XXX Should do a better job of internal sharing for
|
||||
privately allocated TrueColor colormaps. */
|
||||
/* XXX DirectColor probably needs ramps hand initialized! */
|
||||
*cmap = XCreateColormap(__glutDisplay, __glutRoot,
|
||||
vi->visual, AllocNone);
|
||||
break;
|
||||
case StaticColor:
|
||||
case StaticGray:
|
||||
case GrayScale:
|
||||
/* Mesa supports these visuals */
|
||||
*colormap = NULL;
|
||||
*cmap = XCreateColormap(__glutDisplay, __glutRoot,
|
||||
vi->visual, AllocNone);
|
||||
break;
|
||||
default:
|
||||
__glutFatalError(
|
||||
"could not allocate colormap for visual type: %d.",
|
||||
visualClass);
|
||||
}
|
||||
return;
|
||||
#endif
|
||||
}
|
||||
|
||||
#if !defined(_WIN32) && !defined(__OS2__)
|
||||
static int
|
||||
findColormaps(GLUTwindow * window,
|
||||
Window * winlist, Colormap * cmaplist, int num, int max)
|
||||
{
|
||||
GLUTwindow *child;
|
||||
int i;
|
||||
|
||||
/* Do not allow more entries that maximum number of
|
||||
colormaps! */
|
||||
if (num >= max)
|
||||
return num;
|
||||
/* Is cmap for this window already on the list? */
|
||||
for (i = 0; i < num; i++) {
|
||||
if (cmaplist[i] == window->cmap)
|
||||
goto normalColormapAlreadyListed;
|
||||
}
|
||||
/* Not found on the list; add colormap and window. */
|
||||
winlist[num] = window->win;
|
||||
cmaplist[num] = window->cmap;
|
||||
num++;
|
||||
|
||||
normalColormapAlreadyListed:
|
||||
|
||||
/* Repeat above but for the overlay colormap if there one. */
|
||||
if (window->overlay) {
|
||||
if (num >= max)
|
||||
return num;
|
||||
for (i = 0; i < num; i++) {
|
||||
if (cmaplist[i] == window->overlay->cmap)
|
||||
goto overlayColormapAlreadyListed;
|
||||
}
|
||||
winlist[num] = window->overlay->win;
|
||||
cmaplist[num] = window->overlay->cmap;
|
||||
num++;
|
||||
}
|
||||
overlayColormapAlreadyListed:
|
||||
|
||||
/* Recursively search children. */
|
||||
child = window->children;
|
||||
while (child) {
|
||||
num = findColormaps(child, winlist, cmaplist, num, max);
|
||||
child = child->siblings;
|
||||
}
|
||||
return num;
|
||||
}
|
||||
|
||||
void
|
||||
__glutEstablishColormapsProperty(GLUTwindow * window)
|
||||
{
|
||||
/* this routine is strictly X. Win32 doesn't need to do
|
||||
anything of this sort (but has to do other wacky stuff
|
||||
later). */
|
||||
static Atom wmColormapWindows = None;
|
||||
Window *winlist;
|
||||
Colormap *cmaplist;
|
||||
Status status;
|
||||
int maxcmaps, num;
|
||||
|
||||
assert(!window->parent);
|
||||
maxcmaps = MaxCmapsOfScreen(ScreenOfDisplay(__glutDisplay,
|
||||
__glutScreen));
|
||||
/* For portability reasons we don't use alloca for winlist
|
||||
and cmaplist, but we could. */
|
||||
winlist = (Window *) malloc(maxcmaps * sizeof(Window));
|
||||
cmaplist = (Colormap *) malloc(maxcmaps * sizeof(Colormap));
|
||||
num = findColormaps(window, winlist, cmaplist, 0, maxcmaps);
|
||||
if (num < 2) {
|
||||
/* Property no longer needed; remove it. */
|
||||
wmColormapWindows = XSGIFastInternAtom(__glutDisplay,
|
||||
"WM_COLORMAP_WINDOWS", SGI_XA_WM_COLORMAP_WINDOWS, False);
|
||||
if (wmColormapWindows == None) {
|
||||
__glutWarning("Could not intern X atom for WM_COLORMAP_WINDOWS.");
|
||||
return;
|
||||
}
|
||||
XDeleteProperty(__glutDisplay, window->win, wmColormapWindows);
|
||||
} else {
|
||||
status = XSetWMColormapWindows(__glutDisplay, window->win,
|
||||
winlist, num);
|
||||
/* XSetWMColormapWindows should always work unless the
|
||||
WM_COLORMAP_WINDOWS property cannot be intern'ed. We
|
||||
check to be safe. */
|
||||
if (status == False)
|
||||
__glutFatalError("XSetWMColormapWindows returned False.");
|
||||
}
|
||||
/* For portability reasons we don't use alloca for winlist
|
||||
and cmaplist, but we could. */
|
||||
free(winlist);
|
||||
free(cmaplist);
|
||||
}
|
||||
|
||||
GLUTwindow *
|
||||
__glutToplevelOf(GLUTwindow * window)
|
||||
{
|
||||
while (window->parent) {
|
||||
window = window->parent;
|
||||
}
|
||||
return window;
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
__glutFreeColormap(GLUTcolormap * cmap)
|
||||
{
|
||||
GLUTcolormap *cur, **prev;
|
||||
|
||||
cmap->refcnt--;
|
||||
if (cmap->refcnt == 0) {
|
||||
/* remove from colormap list */
|
||||
cur = __glutColormapList;
|
||||
prev = &__glutColormapList;
|
||||
while (cur) {
|
||||
if (cur == cmap) {
|
||||
*prev = cmap->next;
|
||||
break;
|
||||
}
|
||||
prev = &(cur->next);
|
||||
cur = cur->next;
|
||||
}
|
||||
/* actually free colormap */
|
||||
XFreeColormap(__glutDisplay, cmap->cmap);
|
||||
free(cmap->cells);
|
||||
free(cmap);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,210 +1,210 @@
|
|||
|
||||
/* Copyright (c) Mark J. Kilgard, 1995, 1998. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include "glutint.h"
|
||||
|
||||
#if !defined(_WIN32) && !defined(__OS2PM__)
|
||||
#include <X11/Xatom.h> /* For XA_CURSOR */
|
||||
#include <X11/cursorfont.h>
|
||||
#endif
|
||||
|
||||
typedef struct _CursorTable {
|
||||
#if defined(_WIN32)
|
||||
char* glyph;
|
||||
#else
|
||||
int glyph;
|
||||
#endif
|
||||
Cursor cursor;
|
||||
} CursorTable;
|
||||
/* *INDENT-OFF* */
|
||||
|
||||
static CursorTable cursorTable[] = {
|
||||
{XC_arrow, None}, /* GLUT_CURSOR_RIGHT_ARROW */
|
||||
{XC_top_left_arrow, None}, /* GLUT_CURSOR_LEFT_ARROW */
|
||||
{XC_hand1, None}, /* GLUT_CURSOR_INFO */
|
||||
{XC_pirate, None}, /* GLUT_CURSOR_DESTROY */
|
||||
{XC_question_arrow, None}, /* GLUT_CURSOR_HELP */
|
||||
{XC_exchange, None}, /* GLUT_CURSOR_CYCLE */
|
||||
{XC_spraycan, None}, /* GLUT_CURSOR_SPRAY */
|
||||
{XC_watch, None}, /* GLUT_CURSOR_WAIT */
|
||||
{XC_xterm, None}, /* GLUT_CURSOR_TEXT */
|
||||
{XC_crosshair, None}, /* GLUT_CURSOR_CROSSHAIR */
|
||||
{XC_sb_v_double_arrow, None}, /* GLUT_CURSOR_UP_DOWN */
|
||||
{XC_sb_h_double_arrow, None}, /* GLUT_CURSOR_LEFT_RIGHT */
|
||||
{XC_top_side, None}, /* GLUT_CURSOR_TOP_SIDE */
|
||||
{XC_bottom_side, None}, /* GLUT_CURSOR_BOTTOM_SIDE */
|
||||
{XC_left_side, None}, /* GLUT_CURSOR_LEFT_SIDE */
|
||||
{XC_right_side, None}, /* GLUT_CURSOR_RIGHT_SIDE */
|
||||
{XC_top_left_corner, None}, /* GLUT_CURSOR_TOP_LEFT_CORNER */
|
||||
{XC_top_right_corner, None}, /* GLUT_CURSOR_TOP_RIGHT_CORNER */
|
||||
{XC_bottom_right_corner, None}, /* GLUT_CURSOR_BOTTOM_RIGHT_CORNER */
|
||||
{XC_bottom_left_corner, None}, /* GLUT_CURSOR_BOTTOM_LEFT_CORNER */
|
||||
};
|
||||
/* *INDENT-ON* */
|
||||
|
||||
#if !defined(_WIN32) && !defined(__OS2PM__)
|
||||
static Cursor blankCursor = None;
|
||||
static Cursor fullCrosshairCusor = None;
|
||||
|
||||
/* SGI X server's support a special property called the
|
||||
_SGI_CROSSHAIR_CURSOR that when installed as a window's
|
||||
cursor, becomes a full screen crosshair cursor. SGI
|
||||
has special cursor generation hardware for this case. */
|
||||
static Cursor
|
||||
getFullCrosshairCursor(void)
|
||||
{
|
||||
Cursor cursor;
|
||||
Atom crosshairAtom, actualType;
|
||||
int rc, actualFormat;
|
||||
unsigned long n, left;
|
||||
unsigned long *value;
|
||||
|
||||
if (fullCrosshairCusor == None) {
|
||||
crosshairAtom = XInternAtom(__glutDisplay,
|
||||
"_SGI_CROSSHAIR_CURSOR", True);
|
||||
if (crosshairAtom != None) {
|
||||
value = 0; /* Make compiler happy. */
|
||||
rc = XGetWindowProperty(__glutDisplay, __glutRoot,
|
||||
crosshairAtom, 0, 1, False, XA_CURSOR, &actualType,
|
||||
&actualFormat, &n, &left, (unsigned char **) &value);
|
||||
if (rc == Success && actualFormat == 32 && n >= 1) {
|
||||
cursor = value[0];
|
||||
XFree(value);
|
||||
return cursor;
|
||||
}
|
||||
}
|
||||
}
|
||||
return XCreateFontCursor(__glutDisplay, XC_crosshair);
|
||||
}
|
||||
|
||||
/* X11 forces you to create a blank cursor if you want
|
||||
to disable the cursor. */
|
||||
static Cursor
|
||||
makeBlankCursor(void)
|
||||
{
|
||||
static char data[1] =
|
||||
{0};
|
||||
Cursor cursor;
|
||||
Pixmap blank;
|
||||
XColor dummy;
|
||||
|
||||
blank = XCreateBitmapFromData(__glutDisplay, __glutRoot,
|
||||
data, 1, 1);
|
||||
if (blank == None)
|
||||
__glutFatalError("out of memory.");
|
||||
cursor = XCreatePixmapCursor(__glutDisplay, blank, blank,
|
||||
&dummy, &dummy, 0, 0);
|
||||
XFreePixmap(__glutDisplay, blank);
|
||||
|
||||
return cursor;
|
||||
}
|
||||
#endif /* !_WIN32 && !__OS2PM__*/
|
||||
|
||||
/* Win32 and X11 use this same function to accomplish
|
||||
fairly different tasks. X11 lets you just define the
|
||||
cursor for a window and the window system takes care
|
||||
of making sure that the window's cursor is installed
|
||||
when the mouse is in the window. Win32 requires the
|
||||
application to handle a WM_SETCURSOR message to install
|
||||
the right cursor when windows are entered. Think of
|
||||
the Win32 __glutSetCursor (called from __glutWindowProc)
|
||||
as "install cursor". Think of the X11 __glutSetCursor
|
||||
(called from glutSetCursor) as "define cursor". */
|
||||
void
|
||||
__glutSetCursor(GLUTwindow *window)
|
||||
{
|
||||
int cursor = window->cursor;
|
||||
Cursor xcursor = 0;
|
||||
|
||||
if (cursor >= 0 &&
|
||||
cursor < sizeof(cursorTable) / sizeof(cursorTable[0])) {
|
||||
if (cursorTable[cursor].cursor == None) {
|
||||
cursorTable[cursor].cursor = XCreateFontCursor(__glutDisplay,
|
||||
cursorTable[cursor].glyph);
|
||||
}
|
||||
xcursor = cursorTable[cursor].cursor;
|
||||
} else {
|
||||
/* Special cases. */
|
||||
switch (cursor) {
|
||||
case GLUT_CURSOR_INHERIT:
|
||||
#if defined(_WIN32)
|
||||
while (window->parent) {
|
||||
window = window->parent;
|
||||
if (window->cursor != GLUT_CURSOR_INHERIT) {
|
||||
__glutSetCursor(window);
|
||||
return;
|
||||
}
|
||||
}
|
||||
/* XXX Default to an arrow cursor. Is this
|
||||
right or should we be letting the default
|
||||
window proc be installing some system cursor? */
|
||||
xcursor = cursorTable[0].cursor;
|
||||
if (xcursor == NULL) {
|
||||
xcursor =
|
||||
cursorTable[0].cursor =
|
||||
LoadCursor(NULL, cursorTable[0].glyph);
|
||||
}
|
||||
|
||||
#elif defined(__OS2PM__)
|
||||
//todo
|
||||
xcursor = None;
|
||||
|
||||
#else
|
||||
xcursor = None;
|
||||
#endif
|
||||
break;
|
||||
case GLUT_CURSOR_NONE:
|
||||
#if defined(_WIN32) || defined(__OS2PM__)
|
||||
xcursor = NULL;
|
||||
#else
|
||||
if (blankCursor == None) {
|
||||
blankCursor = makeBlankCursor();
|
||||
}
|
||||
xcursor = blankCursor;
|
||||
#endif
|
||||
break;
|
||||
case GLUT_CURSOR_FULL_CROSSHAIR:
|
||||
#if defined(_WIN32)
|
||||
xcursor = (HICON) IDC_CROSS;
|
||||
#elif defined(__OS2PM__)
|
||||
//todo
|
||||
#else
|
||||
if (fullCrosshairCusor == None) {
|
||||
fullCrosshairCusor = getFullCrosshairCursor();
|
||||
}
|
||||
xcursor = fullCrosshairCusor;
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
}
|
||||
XDefineCursor(__glutDisplay,
|
||||
window->win, xcursor);
|
||||
XFlush(__glutDisplay);
|
||||
}
|
||||
|
||||
/* CENTRY */
|
||||
void GLUTAPIENTRY
|
||||
glutSetCursor(int cursor)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
POINT point;
|
||||
|
||||
__glutCurrentWindow->cursor = cursor;
|
||||
/* Are we in the window right now? If so,
|
||||
install the cursor. */
|
||||
GetCursorPos(&point);
|
||||
if (__glutCurrentWindow->win == WindowFromPoint(point)) {
|
||||
__glutSetCursor(__glutCurrentWindow);
|
||||
}
|
||||
#elif defined(__OS2PM__)
|
||||
//todo
|
||||
#else
|
||||
__glutCurrentWindow->cursor = cursor;
|
||||
__glutSetCursor(__glutCurrentWindow);
|
||||
#endif
|
||||
}
|
||||
/* ENDCENTRY */
|
||||
|
||||
/* Copyright (c) Mark J. Kilgard, 1995, 1998. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include "glutint.h"
|
||||
|
||||
#if !defined(_WIN32) && !defined(__OS2PM__)
|
||||
#include <X11/Xatom.h> /* For XA_CURSOR */
|
||||
#include <X11/cursorfont.h>
|
||||
#endif
|
||||
|
||||
typedef struct _CursorTable {
|
||||
#if defined(_WIN32)
|
||||
char* glyph;
|
||||
#else
|
||||
int glyph;
|
||||
#endif
|
||||
Cursor cursor;
|
||||
} CursorTable;
|
||||
/* *INDENT-OFF* */
|
||||
|
||||
static CursorTable cursorTable[] = {
|
||||
{XC_arrow, None}, /* GLUT_CURSOR_RIGHT_ARROW */
|
||||
{XC_top_left_arrow, None}, /* GLUT_CURSOR_LEFT_ARROW */
|
||||
{XC_hand1, None}, /* GLUT_CURSOR_INFO */
|
||||
{XC_pirate, None}, /* GLUT_CURSOR_DESTROY */
|
||||
{XC_question_arrow, None}, /* GLUT_CURSOR_HELP */
|
||||
{XC_exchange, None}, /* GLUT_CURSOR_CYCLE */
|
||||
{XC_spraycan, None}, /* GLUT_CURSOR_SPRAY */
|
||||
{XC_watch, None}, /* GLUT_CURSOR_WAIT */
|
||||
{XC_xterm, None}, /* GLUT_CURSOR_TEXT */
|
||||
{XC_crosshair, None}, /* GLUT_CURSOR_CROSSHAIR */
|
||||
{XC_sb_v_double_arrow, None}, /* GLUT_CURSOR_UP_DOWN */
|
||||
{XC_sb_h_double_arrow, None}, /* GLUT_CURSOR_LEFT_RIGHT */
|
||||
{XC_top_side, None}, /* GLUT_CURSOR_TOP_SIDE */
|
||||
{XC_bottom_side, None}, /* GLUT_CURSOR_BOTTOM_SIDE */
|
||||
{XC_left_side, None}, /* GLUT_CURSOR_LEFT_SIDE */
|
||||
{XC_right_side, None}, /* GLUT_CURSOR_RIGHT_SIDE */
|
||||
{XC_top_left_corner, None}, /* GLUT_CURSOR_TOP_LEFT_CORNER */
|
||||
{XC_top_right_corner, None}, /* GLUT_CURSOR_TOP_RIGHT_CORNER */
|
||||
{XC_bottom_right_corner, None}, /* GLUT_CURSOR_BOTTOM_RIGHT_CORNER */
|
||||
{XC_bottom_left_corner, None}, /* GLUT_CURSOR_BOTTOM_LEFT_CORNER */
|
||||
};
|
||||
/* *INDENT-ON* */
|
||||
|
||||
#if !defined(_WIN32) && !defined(__OS2PM__)
|
||||
static Cursor blankCursor = None;
|
||||
static Cursor fullCrosshairCusor = None;
|
||||
|
||||
/* SGI X server's support a special property called the
|
||||
_SGI_CROSSHAIR_CURSOR that when installed as a window's
|
||||
cursor, becomes a full screen crosshair cursor. SGI
|
||||
has special cursor generation hardware for this case. */
|
||||
static Cursor
|
||||
getFullCrosshairCursor(void)
|
||||
{
|
||||
Cursor cursor;
|
||||
Atom crosshairAtom, actualType;
|
||||
int rc, actualFormat;
|
||||
unsigned long n, left;
|
||||
unsigned long *value;
|
||||
|
||||
if (fullCrosshairCusor == None) {
|
||||
crosshairAtom = XInternAtom(__glutDisplay,
|
||||
"_SGI_CROSSHAIR_CURSOR", True);
|
||||
if (crosshairAtom != None) {
|
||||
value = 0; /* Make compiler happy. */
|
||||
rc = XGetWindowProperty(__glutDisplay, __glutRoot,
|
||||
crosshairAtom, 0, 1, False, XA_CURSOR, &actualType,
|
||||
&actualFormat, &n, &left, (unsigned char **) &value);
|
||||
if (rc == Success && actualFormat == 32 && n >= 1) {
|
||||
cursor = value[0];
|
||||
XFree(value);
|
||||
return cursor;
|
||||
}
|
||||
}
|
||||
}
|
||||
return XCreateFontCursor(__glutDisplay, XC_crosshair);
|
||||
}
|
||||
|
||||
/* X11 forces you to create a blank cursor if you want
|
||||
to disable the cursor. */
|
||||
static Cursor
|
||||
makeBlankCursor(void)
|
||||
{
|
||||
static char data[1] =
|
||||
{0};
|
||||
Cursor cursor;
|
||||
Pixmap blank;
|
||||
XColor dummy;
|
||||
|
||||
blank = XCreateBitmapFromData(__glutDisplay, __glutRoot,
|
||||
data, 1, 1);
|
||||
if (blank == None)
|
||||
__glutFatalError("out of memory.");
|
||||
cursor = XCreatePixmapCursor(__glutDisplay, blank, blank,
|
||||
&dummy, &dummy, 0, 0);
|
||||
XFreePixmap(__glutDisplay, blank);
|
||||
|
||||
return cursor;
|
||||
}
|
||||
#endif /* !_WIN32 && !__OS2PM__*/
|
||||
|
||||
/* Win32 and X11 use this same function to accomplish
|
||||
fairly different tasks. X11 lets you just define the
|
||||
cursor for a window and the window system takes care
|
||||
of making sure that the window's cursor is installed
|
||||
when the mouse is in the window. Win32 requires the
|
||||
application to handle a WM_SETCURSOR message to install
|
||||
the right cursor when windows are entered. Think of
|
||||
the Win32 __glutSetCursor (called from __glutWindowProc)
|
||||
as "install cursor". Think of the X11 __glutSetCursor
|
||||
(called from glutSetCursor) as "define cursor". */
|
||||
void
|
||||
__glutSetCursor(GLUTwindow *window)
|
||||
{
|
||||
int cursor = window->cursor;
|
||||
Cursor xcursor = 0;
|
||||
|
||||
if (cursor >= 0 &&
|
||||
cursor < sizeof(cursorTable) / sizeof(cursorTable[0])) {
|
||||
if (cursorTable[cursor].cursor == None) {
|
||||
cursorTable[cursor].cursor = XCreateFontCursor(__glutDisplay,
|
||||
cursorTable[cursor].glyph);
|
||||
}
|
||||
xcursor = cursorTable[cursor].cursor;
|
||||
} else {
|
||||
/* Special cases. */
|
||||
switch (cursor) {
|
||||
case GLUT_CURSOR_INHERIT:
|
||||
#if defined(_WIN32)
|
||||
while (window->parent) {
|
||||
window = window->parent;
|
||||
if (window->cursor != GLUT_CURSOR_INHERIT) {
|
||||
__glutSetCursor(window);
|
||||
return;
|
||||
}
|
||||
}
|
||||
/* XXX Default to an arrow cursor. Is this
|
||||
right or should we be letting the default
|
||||
window proc be installing some system cursor? */
|
||||
xcursor = cursorTable[0].cursor;
|
||||
if (xcursor == NULL) {
|
||||
xcursor =
|
||||
cursorTable[0].cursor =
|
||||
LoadCursor(NULL, cursorTable[0].glyph);
|
||||
}
|
||||
|
||||
#elif defined(__OS2PM__)
|
||||
//todo
|
||||
xcursor = None;
|
||||
|
||||
#else
|
||||
xcursor = None;
|
||||
#endif
|
||||
break;
|
||||
case GLUT_CURSOR_NONE:
|
||||
#if defined(_WIN32) || defined(__OS2PM__)
|
||||
xcursor = NULL;
|
||||
#else
|
||||
if (blankCursor == None) {
|
||||
blankCursor = makeBlankCursor();
|
||||
}
|
||||
xcursor = blankCursor;
|
||||
#endif
|
||||
break;
|
||||
case GLUT_CURSOR_FULL_CROSSHAIR:
|
||||
#if defined(_WIN32)
|
||||
xcursor = (HICON) IDC_CROSS;
|
||||
#elif defined(__OS2PM__)
|
||||
//todo
|
||||
#else
|
||||
if (fullCrosshairCusor == None) {
|
||||
fullCrosshairCusor = getFullCrosshairCursor();
|
||||
}
|
||||
xcursor = fullCrosshairCusor;
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
}
|
||||
XDefineCursor(__glutDisplay,
|
||||
window->win, xcursor);
|
||||
XFlush(__glutDisplay);
|
||||
}
|
||||
|
||||
/* CENTRY */
|
||||
void GLUTAPIENTRY
|
||||
glutSetCursor(int cursor)
|
||||
{
|
||||
#ifdef _WIN32
|
||||
POINT point;
|
||||
|
||||
__glutCurrentWindow->cursor = cursor;
|
||||
/* Are we in the window right now? If so,
|
||||
install the cursor. */
|
||||
GetCursorPos(&point);
|
||||
if (__glutCurrentWindow->win == WindowFromPoint(point)) {
|
||||
__glutSetCursor(__glutCurrentWindow);
|
||||
}
|
||||
#elif defined(__OS2PM__)
|
||||
//todo
|
||||
#else
|
||||
__glutCurrentWindow->cursor = cursor;
|
||||
__glutSetCursor(__glutCurrentWindow);
|
||||
#endif
|
||||
}
|
||||
/* ENDCENTRY */
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,204 +1,204 @@
|
|||
|
||||
/* Copyright (c) Mark J. Kilgard, 1994, 1997. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "glutint.h"
|
||||
|
||||
/* CENTRY */
|
||||
int GLUTAPIENTRY
|
||||
glutExtensionSupported(const char *extension)
|
||||
{
|
||||
static const GLubyte *extensions = NULL;
|
||||
const GLubyte *start;
|
||||
GLubyte *where, *terminator;
|
||||
|
||||
/* Extension names should not have spaces. */
|
||||
where = (GLubyte *) strchr(extension, ' ');
|
||||
if (where || *extension == '\0')
|
||||
return 0;
|
||||
|
||||
if (!extensions) {
|
||||
extensions = glGetString(GL_EXTENSIONS);
|
||||
}
|
||||
/* It takes a bit of care to be fool-proof about parsing the
|
||||
OpenGL extensions string. Don't be fooled by sub-strings,
|
||||
etc. */
|
||||
start = extensions;
|
||||
for (;;) {
|
||||
/* If your application crashes in the strstr routine below,
|
||||
you are probably calling glutExtensionSupported without
|
||||
having a current window. Calling glGetString without
|
||||
a current OpenGL context has unpredictable results.
|
||||
Please fix your program. */
|
||||
where = (GLubyte *) strstr((const char *) start, extension);
|
||||
if (!where)
|
||||
break;
|
||||
terminator = where + strlen(extension);
|
||||
if (where == start || *(where - 1) == ' ') {
|
||||
if (*terminator == ' ' || *terminator == '\0') {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
start = terminator;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
struct name_address_pair {
|
||||
const char *name;
|
||||
const void *address;
|
||||
};
|
||||
|
||||
static struct name_address_pair glut_functions[] = {
|
||||
{ "glutInit", (const void *) glutInit },
|
||||
{ "glutInitDisplayMode", (const void *) glutInitDisplayMode },
|
||||
{ "glutInitDisplayString", (const void *) glutInitDisplayString },
|
||||
{ "glutInitWindowPosition", (const void *) glutInitWindowPosition },
|
||||
{ "glutInitWindowSize", (const void *) glutInitWindowSize },
|
||||
{ "glutMainLoop", (const void *) glutMainLoop },
|
||||
{ "glutCreateWindow", (const void *) glutCreateWindow },
|
||||
{ "glutCreateSubWindow", (const void *) glutCreateSubWindow },
|
||||
{ "glutDestroyWindow", (const void *) glutDestroyWindow },
|
||||
{ "glutPostRedisplay", (const void *) glutPostRedisplay },
|
||||
{ "glutPostWindowRedisplay", (const void *) glutPostWindowRedisplay },
|
||||
{ "glutSwapBuffers", (const void *) glutSwapBuffers },
|
||||
{ "glutGetWindow", (const void *) glutGetWindow },
|
||||
{ "glutSetWindow", (const void *) glutSetWindow },
|
||||
{ "glutSetWindowTitle", (const void *) glutSetWindowTitle },
|
||||
{ "glutSetIconTitle", (const void *) glutSetIconTitle },
|
||||
{ "glutPositionWindow", (const void *) glutPositionWindow },
|
||||
{ "glutReshapeWindow", (const void *) glutReshapeWindow },
|
||||
{ "glutPopWindow", (const void *) glutPopWindow },
|
||||
{ "glutPushWindow", (const void *) glutPushWindow },
|
||||
{ "glutIconifyWindow", (const void *) glutIconifyWindow },
|
||||
{ "glutShowWindow", (const void *) glutShowWindow },
|
||||
{ "glutHideWindow", (const void *) glutHideWindow },
|
||||
{ "glutFullScreen", (const void *) glutFullScreen },
|
||||
{ "glutSetCursor", (const void *) glutSetCursor },
|
||||
{ "glutWarpPointer", (const void *) glutWarpPointer },
|
||||
{ "glutEstablishOverlay", (const void *) glutEstablishOverlay },
|
||||
{ "glutRemoveOverlay", (const void *) glutRemoveOverlay },
|
||||
{ "glutUseLayer", (const void *) glutUseLayer },
|
||||
{ "glutPostOverlayRedisplay", (const void *) glutPostOverlayRedisplay },
|
||||
{ "glutPostWindowOverlayRedisplay", (const void *) glutPostWindowOverlayRedisplay },
|
||||
{ "glutShowOverlay", (const void *) glutShowOverlay },
|
||||
{ "glutHideOverlay", (const void *) glutHideOverlay },
|
||||
{ "glutCreateMenu", (const void *) glutCreateMenu },
|
||||
{ "glutDestroyMenu", (const void *) glutDestroyMenu },
|
||||
{ "glutGetMenu", (const void *) glutGetMenu },
|
||||
{ "glutSetMenu", (const void *) glutSetMenu },
|
||||
{ "glutAddMenuEntry", (const void *) glutAddMenuEntry },
|
||||
{ "glutAddSubMenu", (const void *) glutAddSubMenu },
|
||||
{ "glutChangeToMenuEntry", (const void *) glutChangeToMenuEntry },
|
||||
{ "glutChangeToSubMenu", (const void *) glutChangeToSubMenu },
|
||||
{ "glutRemoveMenuItem", (const void *) glutRemoveMenuItem },
|
||||
{ "glutAttachMenu", (const void *) glutAttachMenu },
|
||||
{ "glutDetachMenu", (const void *) glutDetachMenu },
|
||||
{ "glutDisplayFunc", (const void *) glutDisplayFunc },
|
||||
{ "glutReshapeFunc", (const void *) glutReshapeFunc },
|
||||
{ "glutKeyboardFunc", (const void *) glutKeyboardFunc },
|
||||
{ "glutMouseFunc", (const void *) glutMouseFunc },
|
||||
{ "glutMotionFunc", (const void *) glutMotionFunc },
|
||||
{ "glutPassiveMotionFunc", (const void *) glutPassiveMotionFunc },
|
||||
{ "glutEntryFunc", (const void *) glutEntryFunc },
|
||||
{ "glutVisibilityFunc", (const void *) glutVisibilityFunc },
|
||||
{ "glutIdleFunc", (const void *) glutIdleFunc },
|
||||
{ "glutTimerFunc", (const void *) glutTimerFunc },
|
||||
{ "glutMenuStateFunc", (const void *) glutMenuStateFunc },
|
||||
{ "glutSpecialFunc", (const void *) glutSpecialFunc },
|
||||
{ "glutSpaceballMotionFunc", (const void *) glutSpaceballMotionFunc },
|
||||
{ "glutSpaceballRotateFunc", (const void *) glutSpaceballRotateFunc },
|
||||
{ "glutSpaceballButtonFunc", (const void *) glutSpaceballButtonFunc },
|
||||
{ "glutButtonBoxFunc", (const void *) glutButtonBoxFunc },
|
||||
{ "glutDialsFunc", (const void *) glutDialsFunc },
|
||||
{ "glutTabletMotionFunc", (const void *) glutTabletMotionFunc },
|
||||
{ "glutTabletButtonFunc", (const void *) glutTabletButtonFunc },
|
||||
{ "glutMenuStatusFunc", (const void *) glutMenuStatusFunc },
|
||||
{ "glutOverlayDisplayFunc", (const void *) glutOverlayDisplayFunc },
|
||||
{ "glutWindowStatusFunc", (const void *) glutWindowStatusFunc },
|
||||
{ "glutKeyboardUpFunc", (const void *) glutKeyboardUpFunc },
|
||||
{ "glutSpecialUpFunc", (const void *) glutSpecialUpFunc },
|
||||
{ "glutJoystickFunc", (const void *) glutJoystickFunc },
|
||||
{ "glutSetColor", (const void *) glutSetColor },
|
||||
{ "glutGetColor", (const void *) glutGetColor },
|
||||
{ "glutCopyColormap", (const void *) glutCopyColormap },
|
||||
{ "glutGet", (const void *) glutGet },
|
||||
{ "glutDeviceGet", (const void *) glutDeviceGet },
|
||||
{ "glutExtensionSupported", (const void *) glutExtensionSupported },
|
||||
{ "glutGetModifiers", (const void *) glutGetModifiers },
|
||||
{ "glutLayerGet", (const void *) glutLayerGet },
|
||||
{ "glutGetProcAddress", (const void *) glutGetProcAddress },
|
||||
{ "glutBitmapCharacter", (const void *) glutBitmapCharacter },
|
||||
{ "glutBitmapWidth", (const void *) glutBitmapWidth },
|
||||
{ "glutStrokeCharacter", (const void *) glutStrokeCharacter },
|
||||
{ "glutStrokeWidth", (const void *) glutStrokeWidth },
|
||||
{ "glutBitmapLength", (const void *) glutBitmapLength },
|
||||
{ "glutStrokeLength", (const void *) glutStrokeLength },
|
||||
{ "glutWireSphere", (const void *) glutWireSphere },
|
||||
{ "glutSolidSphere", (const void *) glutSolidSphere },
|
||||
{ "glutWireCone", (const void *) glutWireCone },
|
||||
{ "glutSolidCone", (const void *) glutSolidCone },
|
||||
{ "glutWireCube", (const void *) glutWireCube },
|
||||
{ "glutSolidCube", (const void *) glutSolidCube },
|
||||
{ "glutWireTorus", (const void *) glutWireTorus },
|
||||
{ "glutSolidTorus", (const void *) glutSolidTorus },
|
||||
{ "glutWireDodecahedron", (const void *) glutWireDodecahedron },
|
||||
{ "glutSolidDodecahedron", (const void *) glutSolidDodecahedron },
|
||||
{ "glutWireTeapot", (const void *) glutWireTeapot },
|
||||
{ "glutSolidTeapot", (const void *) glutSolidTeapot },
|
||||
{ "glutWireOctahedron", (const void *) glutWireOctahedron },
|
||||
{ "glutSolidOctahedron", (const void *) glutSolidOctahedron },
|
||||
{ "glutWireTetrahedron", (const void *) glutWireTetrahedron },
|
||||
{ "glutSolidTetrahedron", (const void *) glutSolidTetrahedron },
|
||||
{ "glutWireIcosahedron", (const void *) glutWireIcosahedron },
|
||||
{ "glutSolidIcosahedron", (const void *) glutSolidIcosahedron },
|
||||
{ "glutVideoResizeGet", (const void *) glutVideoResizeGet },
|
||||
{ "glutSetupVideoResizing", (const void *) glutSetupVideoResizing },
|
||||
{ "glutStopVideoResizing", (const void *) glutStopVideoResizing },
|
||||
{ "glutVideoResize", (const void *) glutVideoResize },
|
||||
{ "glutVideoPan", (const void *) glutVideoPan },
|
||||
{ "glutReportErrors", (const void *) glutReportErrors },
|
||||
{ "glutIgnoreKeyRepeat", (const void *) glutIgnoreKeyRepeat },
|
||||
{ "glutSetKeyRepeat", (const void *) glutSetKeyRepeat },
|
||||
{ "glutForceJoystickFunc", (const void *) glutForceJoystickFunc },
|
||||
{ "glutGameModeString", (const void *) glutGameModeString },
|
||||
{ "glutEnterGameMode", (const void *) glutEnterGameMode },
|
||||
{ "glutLeaveGameMode", (const void *) glutLeaveGameMode },
|
||||
{ "glutGameModeGet", (const void *) glutGameModeGet },
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
|
||||
/* XXX This isn't an official GLUT function, yet */
|
||||
void * GLUTAPIENTRY
|
||||
glutGetProcAddress(const char *procName)
|
||||
{
|
||||
/* Try GLUT functions first */
|
||||
int i;
|
||||
for (i = 0; glut_functions[i].name; i++) {
|
||||
if (strcmp(glut_functions[i].name, procName) == 0)
|
||||
return (void *) glut_functions[i].address;
|
||||
}
|
||||
|
||||
/* Try core GL functions */
|
||||
#if defined(_WIN32)
|
||||
return (void *) wglGetProcAddress((LPCSTR) procName);
|
||||
|
||||
#elif defined(__OS2PM__)
|
||||
return (void *) wglGetProcAddress((char *) procName);
|
||||
#elif defined(GLX_ARB_get_proc_address)
|
||||
return (void *) glXGetProcAddressARB((const GLubyte *) procName);
|
||||
#else
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/* ENDCENTRY */
|
||||
|
||||
/* Copyright (c) Mark J. Kilgard, 1994, 1997. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
#include "glutint.h"
|
||||
|
||||
/* CENTRY */
|
||||
int GLUTAPIENTRY
|
||||
glutExtensionSupported(const char *extension)
|
||||
{
|
||||
static const GLubyte *extensions = NULL;
|
||||
const GLubyte *start;
|
||||
GLubyte *where, *terminator;
|
||||
|
||||
/* Extension names should not have spaces. */
|
||||
where = (GLubyte *) strchr(extension, ' ');
|
||||
if (where || *extension == '\0')
|
||||
return 0;
|
||||
|
||||
if (!extensions) {
|
||||
extensions = glGetString(GL_EXTENSIONS);
|
||||
}
|
||||
/* It takes a bit of care to be fool-proof about parsing the
|
||||
OpenGL extensions string. Don't be fooled by sub-strings,
|
||||
etc. */
|
||||
start = extensions;
|
||||
for (;;) {
|
||||
/* If your application crashes in the strstr routine below,
|
||||
you are probably calling glutExtensionSupported without
|
||||
having a current window. Calling glGetString without
|
||||
a current OpenGL context has unpredictable results.
|
||||
Please fix your program. */
|
||||
where = (GLubyte *) strstr((const char *) start, extension);
|
||||
if (!where)
|
||||
break;
|
||||
terminator = where + strlen(extension);
|
||||
if (where == start || *(where - 1) == ' ') {
|
||||
if (*terminator == ' ' || *terminator == '\0') {
|
||||
return 1;
|
||||
}
|
||||
}
|
||||
start = terminator;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
struct name_address_pair {
|
||||
const char *name;
|
||||
const void *address;
|
||||
};
|
||||
|
||||
static struct name_address_pair glut_functions[] = {
|
||||
{ "glutInit", (const void *) glutInit },
|
||||
{ "glutInitDisplayMode", (const void *) glutInitDisplayMode },
|
||||
{ "glutInitDisplayString", (const void *) glutInitDisplayString },
|
||||
{ "glutInitWindowPosition", (const void *) glutInitWindowPosition },
|
||||
{ "glutInitWindowSize", (const void *) glutInitWindowSize },
|
||||
{ "glutMainLoop", (const void *) glutMainLoop },
|
||||
{ "glutCreateWindow", (const void *) glutCreateWindow },
|
||||
{ "glutCreateSubWindow", (const void *) glutCreateSubWindow },
|
||||
{ "glutDestroyWindow", (const void *) glutDestroyWindow },
|
||||
{ "glutPostRedisplay", (const void *) glutPostRedisplay },
|
||||
{ "glutPostWindowRedisplay", (const void *) glutPostWindowRedisplay },
|
||||
{ "glutSwapBuffers", (const void *) glutSwapBuffers },
|
||||
{ "glutGetWindow", (const void *) glutGetWindow },
|
||||
{ "glutSetWindow", (const void *) glutSetWindow },
|
||||
{ "glutSetWindowTitle", (const void *) glutSetWindowTitle },
|
||||
{ "glutSetIconTitle", (const void *) glutSetIconTitle },
|
||||
{ "glutPositionWindow", (const void *) glutPositionWindow },
|
||||
{ "glutReshapeWindow", (const void *) glutReshapeWindow },
|
||||
{ "glutPopWindow", (const void *) glutPopWindow },
|
||||
{ "glutPushWindow", (const void *) glutPushWindow },
|
||||
{ "glutIconifyWindow", (const void *) glutIconifyWindow },
|
||||
{ "glutShowWindow", (const void *) glutShowWindow },
|
||||
{ "glutHideWindow", (const void *) glutHideWindow },
|
||||
{ "glutFullScreen", (const void *) glutFullScreen },
|
||||
{ "glutSetCursor", (const void *) glutSetCursor },
|
||||
{ "glutWarpPointer", (const void *) glutWarpPointer },
|
||||
{ "glutEstablishOverlay", (const void *) glutEstablishOverlay },
|
||||
{ "glutRemoveOverlay", (const void *) glutRemoveOverlay },
|
||||
{ "glutUseLayer", (const void *) glutUseLayer },
|
||||
{ "glutPostOverlayRedisplay", (const void *) glutPostOverlayRedisplay },
|
||||
{ "glutPostWindowOverlayRedisplay", (const void *) glutPostWindowOverlayRedisplay },
|
||||
{ "glutShowOverlay", (const void *) glutShowOverlay },
|
||||
{ "glutHideOverlay", (const void *) glutHideOverlay },
|
||||
{ "glutCreateMenu", (const void *) glutCreateMenu },
|
||||
{ "glutDestroyMenu", (const void *) glutDestroyMenu },
|
||||
{ "glutGetMenu", (const void *) glutGetMenu },
|
||||
{ "glutSetMenu", (const void *) glutSetMenu },
|
||||
{ "glutAddMenuEntry", (const void *) glutAddMenuEntry },
|
||||
{ "glutAddSubMenu", (const void *) glutAddSubMenu },
|
||||
{ "glutChangeToMenuEntry", (const void *) glutChangeToMenuEntry },
|
||||
{ "glutChangeToSubMenu", (const void *) glutChangeToSubMenu },
|
||||
{ "glutRemoveMenuItem", (const void *) glutRemoveMenuItem },
|
||||
{ "glutAttachMenu", (const void *) glutAttachMenu },
|
||||
{ "glutDetachMenu", (const void *) glutDetachMenu },
|
||||
{ "glutDisplayFunc", (const void *) glutDisplayFunc },
|
||||
{ "glutReshapeFunc", (const void *) glutReshapeFunc },
|
||||
{ "glutKeyboardFunc", (const void *) glutKeyboardFunc },
|
||||
{ "glutMouseFunc", (const void *) glutMouseFunc },
|
||||
{ "glutMotionFunc", (const void *) glutMotionFunc },
|
||||
{ "glutPassiveMotionFunc", (const void *) glutPassiveMotionFunc },
|
||||
{ "glutEntryFunc", (const void *) glutEntryFunc },
|
||||
{ "glutVisibilityFunc", (const void *) glutVisibilityFunc },
|
||||
{ "glutIdleFunc", (const void *) glutIdleFunc },
|
||||
{ "glutTimerFunc", (const void *) glutTimerFunc },
|
||||
{ "glutMenuStateFunc", (const void *) glutMenuStateFunc },
|
||||
{ "glutSpecialFunc", (const void *) glutSpecialFunc },
|
||||
{ "glutSpaceballMotionFunc", (const void *) glutSpaceballMotionFunc },
|
||||
{ "glutSpaceballRotateFunc", (const void *) glutSpaceballRotateFunc },
|
||||
{ "glutSpaceballButtonFunc", (const void *) glutSpaceballButtonFunc },
|
||||
{ "glutButtonBoxFunc", (const void *) glutButtonBoxFunc },
|
||||
{ "glutDialsFunc", (const void *) glutDialsFunc },
|
||||
{ "glutTabletMotionFunc", (const void *) glutTabletMotionFunc },
|
||||
{ "glutTabletButtonFunc", (const void *) glutTabletButtonFunc },
|
||||
{ "glutMenuStatusFunc", (const void *) glutMenuStatusFunc },
|
||||
{ "glutOverlayDisplayFunc", (const void *) glutOverlayDisplayFunc },
|
||||
{ "glutWindowStatusFunc", (const void *) glutWindowStatusFunc },
|
||||
{ "glutKeyboardUpFunc", (const void *) glutKeyboardUpFunc },
|
||||
{ "glutSpecialUpFunc", (const void *) glutSpecialUpFunc },
|
||||
{ "glutJoystickFunc", (const void *) glutJoystickFunc },
|
||||
{ "glutSetColor", (const void *) glutSetColor },
|
||||
{ "glutGetColor", (const void *) glutGetColor },
|
||||
{ "glutCopyColormap", (const void *) glutCopyColormap },
|
||||
{ "glutGet", (const void *) glutGet },
|
||||
{ "glutDeviceGet", (const void *) glutDeviceGet },
|
||||
{ "glutExtensionSupported", (const void *) glutExtensionSupported },
|
||||
{ "glutGetModifiers", (const void *) glutGetModifiers },
|
||||
{ "glutLayerGet", (const void *) glutLayerGet },
|
||||
{ "glutGetProcAddress", (const void *) glutGetProcAddress },
|
||||
{ "glutBitmapCharacter", (const void *) glutBitmapCharacter },
|
||||
{ "glutBitmapWidth", (const void *) glutBitmapWidth },
|
||||
{ "glutStrokeCharacter", (const void *) glutStrokeCharacter },
|
||||
{ "glutStrokeWidth", (const void *) glutStrokeWidth },
|
||||
{ "glutBitmapLength", (const void *) glutBitmapLength },
|
||||
{ "glutStrokeLength", (const void *) glutStrokeLength },
|
||||
{ "glutWireSphere", (const void *) glutWireSphere },
|
||||
{ "glutSolidSphere", (const void *) glutSolidSphere },
|
||||
{ "glutWireCone", (const void *) glutWireCone },
|
||||
{ "glutSolidCone", (const void *) glutSolidCone },
|
||||
{ "glutWireCube", (const void *) glutWireCube },
|
||||
{ "glutSolidCube", (const void *) glutSolidCube },
|
||||
{ "glutWireTorus", (const void *) glutWireTorus },
|
||||
{ "glutSolidTorus", (const void *) glutSolidTorus },
|
||||
{ "glutWireDodecahedron", (const void *) glutWireDodecahedron },
|
||||
{ "glutSolidDodecahedron", (const void *) glutSolidDodecahedron },
|
||||
{ "glutWireTeapot", (const void *) glutWireTeapot },
|
||||
{ "glutSolidTeapot", (const void *) glutSolidTeapot },
|
||||
{ "glutWireOctahedron", (const void *) glutWireOctahedron },
|
||||
{ "glutSolidOctahedron", (const void *) glutSolidOctahedron },
|
||||
{ "glutWireTetrahedron", (const void *) glutWireTetrahedron },
|
||||
{ "glutSolidTetrahedron", (const void *) glutSolidTetrahedron },
|
||||
{ "glutWireIcosahedron", (const void *) glutWireIcosahedron },
|
||||
{ "glutSolidIcosahedron", (const void *) glutSolidIcosahedron },
|
||||
{ "glutVideoResizeGet", (const void *) glutVideoResizeGet },
|
||||
{ "glutSetupVideoResizing", (const void *) glutSetupVideoResizing },
|
||||
{ "glutStopVideoResizing", (const void *) glutStopVideoResizing },
|
||||
{ "glutVideoResize", (const void *) glutVideoResize },
|
||||
{ "glutVideoPan", (const void *) glutVideoPan },
|
||||
{ "glutReportErrors", (const void *) glutReportErrors },
|
||||
{ "glutIgnoreKeyRepeat", (const void *) glutIgnoreKeyRepeat },
|
||||
{ "glutSetKeyRepeat", (const void *) glutSetKeyRepeat },
|
||||
{ "glutForceJoystickFunc", (const void *) glutForceJoystickFunc },
|
||||
{ "glutGameModeString", (const void *) glutGameModeString },
|
||||
{ "glutEnterGameMode", (const void *) glutEnterGameMode },
|
||||
{ "glutLeaveGameMode", (const void *) glutLeaveGameMode },
|
||||
{ "glutGameModeGet", (const void *) glutGameModeGet },
|
||||
{ NULL, NULL }
|
||||
};
|
||||
|
||||
|
||||
/* XXX This isn't an official GLUT function, yet */
|
||||
void * GLUTAPIENTRY
|
||||
glutGetProcAddress(const char *procName)
|
||||
{
|
||||
/* Try GLUT functions first */
|
||||
int i;
|
||||
for (i = 0; glut_functions[i].name; i++) {
|
||||
if (strcmp(glut_functions[i].name, procName) == 0)
|
||||
return (void *) glut_functions[i].address;
|
||||
}
|
||||
|
||||
/* Try core GL functions */
|
||||
#if defined(_WIN32)
|
||||
return (void *) wglGetProcAddress((LPCSTR) procName);
|
||||
|
||||
#elif defined(__OS2PM__)
|
||||
return (void *) wglGetProcAddress((char *) procName);
|
||||
#elif defined(GLX_ARB_get_proc_address)
|
||||
return (void *) glXGetProcAddressARB((const GLubyte *) procName);
|
||||
#else
|
||||
return NULL;
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
/* ENDCENTRY */
|
||||
|
|
|
@ -1,38 +1,38 @@
|
|||
|
||||
/* Copyright (c) Mark J. Kilgard, 1995, 1998. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
#include "glutint.h"
|
||||
|
||||
/* CENTRY */
|
||||
void GLUTAPIENTRY
|
||||
glutFullScreen(void)
|
||||
{
|
||||
assert(!__glutCurrentWindow->parent);
|
||||
IGNORE_IN_GAME_MODE();
|
||||
#if !defined(_WIN32) && !defined(__OS2PM__)
|
||||
if (__glutMotifHints == None) {
|
||||
__glutMotifHints = XSGIFastInternAtom(__glutDisplay, "_MOTIF_WM_HINTS",
|
||||
SGI_XA__MOTIF_WM_HINTS, 0);
|
||||
if (__glutMotifHints == None) {
|
||||
__glutWarning("Could not intern X atom for _MOTIF_WM_HINTS.");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
__glutCurrentWindow->desiredX = 0;
|
||||
__glutCurrentWindow->desiredY = 0;
|
||||
__glutCurrentWindow->desiredWidth = __glutScreenWidth;
|
||||
__glutCurrentWindow->desiredHeight = __glutScreenHeight;
|
||||
__glutCurrentWindow->desiredConfMask |= CWX | CWY | CWWidth | CWHeight;
|
||||
|
||||
__glutPutOnWorkList(__glutCurrentWindow,
|
||||
GLUT_CONFIGURE_WORK | GLUT_FULL_SCREEN_WORK);
|
||||
}
|
||||
|
||||
/* ENDCENTRY */
|
||||
|
||||
/* Copyright (c) Mark J. Kilgard, 1995, 1998. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include <assert.h>
|
||||
|
||||
#include "glutint.h"
|
||||
|
||||
/* CENTRY */
|
||||
void GLUTAPIENTRY
|
||||
glutFullScreen(void)
|
||||
{
|
||||
assert(!__glutCurrentWindow->parent);
|
||||
IGNORE_IN_GAME_MODE();
|
||||
#if !defined(_WIN32) && !defined(__OS2PM__)
|
||||
if (__glutMotifHints == None) {
|
||||
__glutMotifHints = XSGIFastInternAtom(__glutDisplay, "_MOTIF_WM_HINTS",
|
||||
SGI_XA__MOTIF_WM_HINTS, 0);
|
||||
if (__glutMotifHints == None) {
|
||||
__glutWarning("Could not intern X atom for _MOTIF_WM_HINTS.");
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
__glutCurrentWindow->desiredX = 0;
|
||||
__glutCurrentWindow->desiredY = 0;
|
||||
__glutCurrentWindow->desiredWidth = __glutScreenWidth;
|
||||
__glutCurrentWindow->desiredHeight = __glutScreenHeight;
|
||||
__glutCurrentWindow->desiredConfMask |= CWX | CWY | CWWidth | CWHeight;
|
||||
|
||||
__glutPutOnWorkList(__glutCurrentWindow,
|
||||
GLUT_CONFIGURE_WORK | GLUT_FULL_SCREEN_WORK);
|
||||
}
|
||||
|
||||
/* ENDCENTRY */
|
||||
|
|
|
@ -1,232 +1,232 @@
|
|||
|
||||
/* Copyright (c) Mark J. Kilgard, 1994, 1997, 1998. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h> /* SunOS 4 needs NULL defined for GETTIMEOFDAY macro. */
|
||||
#include "glutint.h"
|
||||
|
||||
/* CENTRY */
|
||||
int GLUTAPIENTRY
|
||||
glutGet(GLenum param)
|
||||
{
|
||||
Window win, root;
|
||||
int x, y, value;
|
||||
unsigned int width, height, border, depth;
|
||||
|
||||
switch (param) {
|
||||
case GLUT_INIT_WINDOW_X:
|
||||
return __glutInitX;
|
||||
case GLUT_INIT_WINDOW_Y:
|
||||
return __glutInitY;
|
||||
case GLUT_INIT_WINDOW_WIDTH:
|
||||
return __glutInitWidth;
|
||||
case GLUT_INIT_WINDOW_HEIGHT:
|
||||
return __glutInitHeight;
|
||||
case GLUT_INIT_DISPLAY_MODE:
|
||||
return __glutDisplayMode;
|
||||
case GLUT_WINDOW_X:
|
||||
XTranslateCoordinates(__glutDisplay, __glutCurrentWindow->win,
|
||||
__glutRoot, 0, 0, &x, &y, &win);
|
||||
return x;
|
||||
case GLUT_WINDOW_Y:
|
||||
XTranslateCoordinates(__glutDisplay, __glutCurrentWindow->win,
|
||||
__glutRoot, 0, 0, &x, &y, &win);
|
||||
return y;
|
||||
case GLUT_WINDOW_WIDTH:
|
||||
if (!__glutCurrentWindow->reshape) {
|
||||
XGetGeometry(__glutDisplay, __glutCurrentWindow->win,
|
||||
&root, &x, &y,
|
||||
&width, &height, &border, &depth);
|
||||
return width;
|
||||
}
|
||||
return __glutCurrentWindow->width;
|
||||
case GLUT_WINDOW_HEIGHT:
|
||||
if (!__glutCurrentWindow->reshape) {
|
||||
XGetGeometry(__glutDisplay, __glutCurrentWindow->win,
|
||||
&root, &x, &y,
|
||||
&width, &height, &border, &depth);
|
||||
return height;
|
||||
}
|
||||
return __glutCurrentWindow->height;
|
||||
#ifdef __OS2__
|
||||
#define GET_CONFIG(attrib) \
|
||||
{ if (__glutCurrentWindow->renderWin == __glutCurrentWindow->win) \
|
||||
glXGetConfig( __glutCurrentWindow->vis, attrib, &value); \
|
||||
else \
|
||||
glXGetConfig(__glutCurrentWindow->overlay->vis, attrib, &value); \
|
||||
} \
|
||||
|
||||
#else
|
||||
|
||||
#define GET_CONFIG(attrib) { \
|
||||
if (__glutCurrentWindow->renderWin == __glutCurrentWindow->win) { \
|
||||
glXGetConfig(__glutDisplay, __glutCurrentWindow->vis, \
|
||||
attrib, &value); \
|
||||
} else { \
|
||||
glXGetConfig(__glutDisplay, __glutCurrentWindow->overlay->vis, \
|
||||
attrib, &value); \
|
||||
} \
|
||||
}
|
||||
#endif
|
||||
|
||||
case GLUT_WINDOW_BUFFER_SIZE:
|
||||
GET_CONFIG(GLX_BUFFER_SIZE);
|
||||
return value;
|
||||
case GLUT_WINDOW_STENCIL_SIZE:
|
||||
GET_CONFIG(GLX_STENCIL_SIZE);
|
||||
return value;
|
||||
case GLUT_WINDOW_DEPTH_SIZE:
|
||||
GET_CONFIG(GLX_DEPTH_SIZE);
|
||||
return value;
|
||||
case GLUT_WINDOW_RED_SIZE:
|
||||
GET_CONFIG(GLX_RED_SIZE);
|
||||
return value;
|
||||
case GLUT_WINDOW_GREEN_SIZE:
|
||||
GET_CONFIG(GLX_GREEN_SIZE);
|
||||
return value;
|
||||
case GLUT_WINDOW_BLUE_SIZE:
|
||||
GET_CONFIG(GLX_BLUE_SIZE);
|
||||
return value;
|
||||
case GLUT_WINDOW_ALPHA_SIZE:
|
||||
GET_CONFIG(GLX_ALPHA_SIZE);
|
||||
return value;
|
||||
case GLUT_WINDOW_ACCUM_RED_SIZE:
|
||||
GET_CONFIG(GLX_ACCUM_RED_SIZE);
|
||||
return value;
|
||||
case GLUT_WINDOW_ACCUM_GREEN_SIZE:
|
||||
GET_CONFIG(GLX_ACCUM_GREEN_SIZE);
|
||||
return value;
|
||||
case GLUT_WINDOW_ACCUM_BLUE_SIZE:
|
||||
GET_CONFIG(GLX_ACCUM_BLUE_SIZE);
|
||||
return value;
|
||||
case GLUT_WINDOW_ACCUM_ALPHA_SIZE:
|
||||
GET_CONFIG(GLX_ACCUM_ALPHA_SIZE);
|
||||
return value;
|
||||
case GLUT_WINDOW_DOUBLEBUFFER:
|
||||
GET_CONFIG(GLX_DOUBLEBUFFER);
|
||||
return value;
|
||||
case GLUT_WINDOW_RGBA:
|
||||
GET_CONFIG(GLX_RGBA);
|
||||
return value;
|
||||
case GLUT_WINDOW_COLORMAP_SIZE:
|
||||
GET_CONFIG(GLX_RGBA);
|
||||
if (value) {
|
||||
return 0;
|
||||
} else {
|
||||
#if defined(_WIN32) || defined(__OS2__)
|
||||
/* KLUDGE: we always assume 256 colors in CI mode on
|
||||
Win32 */
|
||||
return 256;
|
||||
#else
|
||||
if (__glutCurrentWindow->renderWin == __glutCurrentWindow->win) {
|
||||
return __glutCurrentWindow->vis->visual->map_entries;
|
||||
} else {
|
||||
return __glutCurrentWindow->overlay->vis->visual->map_entries;
|
||||
}
|
||||
#endif /* _WIN32 */
|
||||
}
|
||||
case GLUT_WINDOW_PARENT:
|
||||
return __glutCurrentWindow->parent ?
|
||||
__glutCurrentWindow->parent->num + 1 : 0;
|
||||
case GLUT_WINDOW_NUM_CHILDREN:
|
||||
{
|
||||
int num = 0;
|
||||
GLUTwindow *children = __glutCurrentWindow->children;
|
||||
|
||||
while (children) {
|
||||
num++;
|
||||
children = children->siblings;
|
||||
}
|
||||
return num;
|
||||
}
|
||||
case GLUT_WINDOW_NUM_SAMPLES:
|
||||
#if defined(GLX_VERSION_1_1) && defined(GLX_SGIS_multisample)
|
||||
if (__glutIsSupportedByGLX("GLX_SGIS_multisample")) {
|
||||
GET_CONFIG(GLX_SAMPLES_SGIS);
|
||||
return value;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
/* Independent of GLX server support, multisampling not
|
||||
supported by GLX client-side. */
|
||||
return 0;
|
||||
#endif
|
||||
case GLUT_WINDOW_STEREO:
|
||||
GET_CONFIG(GLX_STEREO);
|
||||
return value;
|
||||
case GLUT_WINDOW_CURSOR:
|
||||
return __glutCurrentWindow->cursor;
|
||||
case GLUT_SCREEN_WIDTH:
|
||||
return DisplayWidth(__glutDisplay, __glutScreen);
|
||||
case GLUT_SCREEN_HEIGHT:
|
||||
return DisplayHeight(__glutDisplay, __glutScreen);
|
||||
case GLUT_SCREEN_WIDTH_MM:
|
||||
return DisplayWidthMM(__glutDisplay, __glutScreen);
|
||||
case GLUT_SCREEN_HEIGHT_MM:
|
||||
return DisplayHeightMM(__glutDisplay, __glutScreen);
|
||||
case GLUT_MENU_NUM_ITEMS:
|
||||
return __glutCurrentMenu->num;
|
||||
case GLUT_DISPLAY_MODE_POSSIBLE:
|
||||
{
|
||||
XVisualInfo *vi;
|
||||
Bool dummy, visAlloced;
|
||||
void *fbc;
|
||||
|
||||
#if defined(_WIN32)
|
||||
/* Our fake glXChooseVisual (which is called by
|
||||
__glutDetermineVisual) needs an HDC to work with, so grab one
|
||||
from the "root" window. */
|
||||
XHDC = GetDC(GetDesktopWindow());
|
||||
#endif
|
||||
vi = __glutDetermineWindowVisual(&dummy, &visAlloced, &fbc);
|
||||
#if defined(_WIN32)
|
||||
ReleaseDC(GetDesktopWindow(), XHDC);
|
||||
#endif
|
||||
if (vi) {
|
||||
if (visAlloced)
|
||||
XFree(vi);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
case GLUT_ELAPSED_TIME:
|
||||
{
|
||||
#ifdef OLD_VMS
|
||||
struct timeval6 elapsed, beginning, now;
|
||||
#else
|
||||
struct timeval elapsed, beginning, now;
|
||||
#endif
|
||||
|
||||
__glutInitTime(&beginning);
|
||||
GETTIMEOFDAY(&now);
|
||||
TIMEDELTA(elapsed, now, beginning);
|
||||
/* Return elapsed milliseconds. */
|
||||
#if defined(__vms) && ( __VMS_VER < 70000000 )
|
||||
return (int) (elapsed.val / TICKS_PER_MILLISECOND);
|
||||
#else
|
||||
return (int) ((elapsed.tv_sec * 1000) + (elapsed.tv_usec / 1000));
|
||||
#endif
|
||||
}
|
||||
case GLUT_WINDOW_FORMAT_ID:
|
||||
#if defined(__OS2__)
|
||||
return wglGetPixelFormat(__glutCurrentWindow->hdc);
|
||||
#elif defined(_WIN32)
|
||||
return GetPixelFormat(__glutCurrentWindow->hdc);
|
||||
#else
|
||||
if (__glutCurrentWindow->renderWin == __glutCurrentWindow->win) {
|
||||
return (int) __glutCurrentWindow->vis->visualid;
|
||||
} else {
|
||||
return (int) __glutCurrentWindow->overlay->vis->visualid;
|
||||
}
|
||||
#endif
|
||||
default:
|
||||
__glutWarning("invalid glutGet parameter: %d", param);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
/* ENDCENTRY */
|
||||
|
||||
/* Copyright (c) Mark J. Kilgard, 1994, 1997, 1998. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include <assert.h>
|
||||
#include <stdlib.h> /* SunOS 4 needs NULL defined for GETTIMEOFDAY macro. */
|
||||
#include "glutint.h"
|
||||
|
||||
/* CENTRY */
|
||||
int GLUTAPIENTRY
|
||||
glutGet(GLenum param)
|
||||
{
|
||||
Window win, root;
|
||||
int x, y, value;
|
||||
unsigned int width, height, border, depth;
|
||||
|
||||
switch (param) {
|
||||
case GLUT_INIT_WINDOW_X:
|
||||
return __glutInitX;
|
||||
case GLUT_INIT_WINDOW_Y:
|
||||
return __glutInitY;
|
||||
case GLUT_INIT_WINDOW_WIDTH:
|
||||
return __glutInitWidth;
|
||||
case GLUT_INIT_WINDOW_HEIGHT:
|
||||
return __glutInitHeight;
|
||||
case GLUT_INIT_DISPLAY_MODE:
|
||||
return __glutDisplayMode;
|
||||
case GLUT_WINDOW_X:
|
||||
XTranslateCoordinates(__glutDisplay, __glutCurrentWindow->win,
|
||||
__glutRoot, 0, 0, &x, &y, &win);
|
||||
return x;
|
||||
case GLUT_WINDOW_Y:
|
||||
XTranslateCoordinates(__glutDisplay, __glutCurrentWindow->win,
|
||||
__glutRoot, 0, 0, &x, &y, &win);
|
||||
return y;
|
||||
case GLUT_WINDOW_WIDTH:
|
||||
if (!__glutCurrentWindow->reshape) {
|
||||
XGetGeometry(__glutDisplay, __glutCurrentWindow->win,
|
||||
&root, &x, &y,
|
||||
&width, &height, &border, &depth);
|
||||
return width;
|
||||
}
|
||||
return __glutCurrentWindow->width;
|
||||
case GLUT_WINDOW_HEIGHT:
|
||||
if (!__glutCurrentWindow->reshape) {
|
||||
XGetGeometry(__glutDisplay, __glutCurrentWindow->win,
|
||||
&root, &x, &y,
|
||||
&width, &height, &border, &depth);
|
||||
return height;
|
||||
}
|
||||
return __glutCurrentWindow->height;
|
||||
#ifdef __OS2__
|
||||
#define GET_CONFIG(attrib) \
|
||||
{ if (__glutCurrentWindow->renderWin == __glutCurrentWindow->win) \
|
||||
glXGetConfig( __glutCurrentWindow->vis, attrib, &value); \
|
||||
else \
|
||||
glXGetConfig(__glutCurrentWindow->overlay->vis, attrib, &value); \
|
||||
} \
|
||||
|
||||
#else
|
||||
|
||||
#define GET_CONFIG(attrib) { \
|
||||
if (__glutCurrentWindow->renderWin == __glutCurrentWindow->win) { \
|
||||
glXGetConfig(__glutDisplay, __glutCurrentWindow->vis, \
|
||||
attrib, &value); \
|
||||
} else { \
|
||||
glXGetConfig(__glutDisplay, __glutCurrentWindow->overlay->vis, \
|
||||
attrib, &value); \
|
||||
} \
|
||||
}
|
||||
#endif
|
||||
|
||||
case GLUT_WINDOW_BUFFER_SIZE:
|
||||
GET_CONFIG(GLX_BUFFER_SIZE);
|
||||
return value;
|
||||
case GLUT_WINDOW_STENCIL_SIZE:
|
||||
GET_CONFIG(GLX_STENCIL_SIZE);
|
||||
return value;
|
||||
case GLUT_WINDOW_DEPTH_SIZE:
|
||||
GET_CONFIG(GLX_DEPTH_SIZE);
|
||||
return value;
|
||||
case GLUT_WINDOW_RED_SIZE:
|
||||
GET_CONFIG(GLX_RED_SIZE);
|
||||
return value;
|
||||
case GLUT_WINDOW_GREEN_SIZE:
|
||||
GET_CONFIG(GLX_GREEN_SIZE);
|
||||
return value;
|
||||
case GLUT_WINDOW_BLUE_SIZE:
|
||||
GET_CONFIG(GLX_BLUE_SIZE);
|
||||
return value;
|
||||
case GLUT_WINDOW_ALPHA_SIZE:
|
||||
GET_CONFIG(GLX_ALPHA_SIZE);
|
||||
return value;
|
||||
case GLUT_WINDOW_ACCUM_RED_SIZE:
|
||||
GET_CONFIG(GLX_ACCUM_RED_SIZE);
|
||||
return value;
|
||||
case GLUT_WINDOW_ACCUM_GREEN_SIZE:
|
||||
GET_CONFIG(GLX_ACCUM_GREEN_SIZE);
|
||||
return value;
|
||||
case GLUT_WINDOW_ACCUM_BLUE_SIZE:
|
||||
GET_CONFIG(GLX_ACCUM_BLUE_SIZE);
|
||||
return value;
|
||||
case GLUT_WINDOW_ACCUM_ALPHA_SIZE:
|
||||
GET_CONFIG(GLX_ACCUM_ALPHA_SIZE);
|
||||
return value;
|
||||
case GLUT_WINDOW_DOUBLEBUFFER:
|
||||
GET_CONFIG(GLX_DOUBLEBUFFER);
|
||||
return value;
|
||||
case GLUT_WINDOW_RGBA:
|
||||
GET_CONFIG(GLX_RGBA);
|
||||
return value;
|
||||
case GLUT_WINDOW_COLORMAP_SIZE:
|
||||
GET_CONFIG(GLX_RGBA);
|
||||
if (value) {
|
||||
return 0;
|
||||
} else {
|
||||
#if defined(_WIN32) || defined(__OS2__)
|
||||
/* KLUDGE: we always assume 256 colors in CI mode on
|
||||
Win32 */
|
||||
return 256;
|
||||
#else
|
||||
if (__glutCurrentWindow->renderWin == __glutCurrentWindow->win) {
|
||||
return __glutCurrentWindow->vis->visual->map_entries;
|
||||
} else {
|
||||
return __glutCurrentWindow->overlay->vis->visual->map_entries;
|
||||
}
|
||||
#endif /* _WIN32 */
|
||||
}
|
||||
case GLUT_WINDOW_PARENT:
|
||||
return __glutCurrentWindow->parent ?
|
||||
__glutCurrentWindow->parent->num + 1 : 0;
|
||||
case GLUT_WINDOW_NUM_CHILDREN:
|
||||
{
|
||||
int num = 0;
|
||||
GLUTwindow *children = __glutCurrentWindow->children;
|
||||
|
||||
while (children) {
|
||||
num++;
|
||||
children = children->siblings;
|
||||
}
|
||||
return num;
|
||||
}
|
||||
case GLUT_WINDOW_NUM_SAMPLES:
|
||||
#if defined(GLX_VERSION_1_1) && defined(GLX_SGIS_multisample)
|
||||
if (__glutIsSupportedByGLX("GLX_SGIS_multisample")) {
|
||||
GET_CONFIG(GLX_SAMPLES_SGIS);
|
||||
return value;
|
||||
} else {
|
||||
return 0;
|
||||
}
|
||||
#else
|
||||
/* Independent of GLX server support, multisampling not
|
||||
supported by GLX client-side. */
|
||||
return 0;
|
||||
#endif
|
||||
case GLUT_WINDOW_STEREO:
|
||||
GET_CONFIG(GLX_STEREO);
|
||||
return value;
|
||||
case GLUT_WINDOW_CURSOR:
|
||||
return __glutCurrentWindow->cursor;
|
||||
case GLUT_SCREEN_WIDTH:
|
||||
return DisplayWidth(__glutDisplay, __glutScreen);
|
||||
case GLUT_SCREEN_HEIGHT:
|
||||
return DisplayHeight(__glutDisplay, __glutScreen);
|
||||
case GLUT_SCREEN_WIDTH_MM:
|
||||
return DisplayWidthMM(__glutDisplay, __glutScreen);
|
||||
case GLUT_SCREEN_HEIGHT_MM:
|
||||
return DisplayHeightMM(__glutDisplay, __glutScreen);
|
||||
case GLUT_MENU_NUM_ITEMS:
|
||||
return __glutCurrentMenu->num;
|
||||
case GLUT_DISPLAY_MODE_POSSIBLE:
|
||||
{
|
||||
XVisualInfo *vi;
|
||||
Bool dummy, visAlloced;
|
||||
void *fbc;
|
||||
|
||||
#if defined(_WIN32)
|
||||
/* Our fake glXChooseVisual (which is called by
|
||||
__glutDetermineVisual) needs an HDC to work with, so grab one
|
||||
from the "root" window. */
|
||||
XHDC = GetDC(GetDesktopWindow());
|
||||
#endif
|
||||
vi = __glutDetermineWindowVisual(&dummy, &visAlloced, &fbc);
|
||||
#if defined(_WIN32)
|
||||
ReleaseDC(GetDesktopWindow(), XHDC);
|
||||
#endif
|
||||
if (vi) {
|
||||
if (visAlloced)
|
||||
XFree(vi);
|
||||
return 1;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
case GLUT_ELAPSED_TIME:
|
||||
{
|
||||
#ifdef OLD_VMS
|
||||
struct timeval6 elapsed, beginning, now;
|
||||
#else
|
||||
struct timeval elapsed, beginning, now;
|
||||
#endif
|
||||
|
||||
__glutInitTime(&beginning);
|
||||
GETTIMEOFDAY(&now);
|
||||
TIMEDELTA(elapsed, now, beginning);
|
||||
/* Return elapsed milliseconds. */
|
||||
#if defined(__vms) && ( __VMS_VER < 70000000 )
|
||||
return (int) (elapsed.val / TICKS_PER_MILLISECOND);
|
||||
#else
|
||||
return (int) ((elapsed.tv_sec * 1000) + (elapsed.tv_usec / 1000));
|
||||
#endif
|
||||
}
|
||||
case GLUT_WINDOW_FORMAT_ID:
|
||||
#if defined(__OS2__)
|
||||
return wglGetPixelFormat(__glutCurrentWindow->hdc);
|
||||
#elif defined(_WIN32)
|
||||
return GetPixelFormat(__glutCurrentWindow->hdc);
|
||||
#else
|
||||
if (__glutCurrentWindow->renderWin == __glutCurrentWindow->win) {
|
||||
return (int) __glutCurrentWindow->vis->visualid;
|
||||
} else {
|
||||
return (int) __glutCurrentWindow->overlay->vis->visualid;
|
||||
}
|
||||
#endif
|
||||
default:
|
||||
__glutWarning("invalid glutGet parameter: %d", param);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
/* ENDCENTRY */
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,451 +1,451 @@
|
|||
|
||||
/* Copyright (c) Mark J. Kilgard, 1994, 1997. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#ifdef __VMS
|
||||
#include <GL/vms_x_fix.h>
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#if !defined(_WIN32) && !defined(__OS2__)
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xatom.h>
|
||||
#endif
|
||||
|
||||
/* SGI optimization introduced in IRIX 6.3 to avoid X server
|
||||
round trips for interning common X atoms. */
|
||||
#if defined(_SGI_EXTRA_PREDEFINES) && !defined(NO_FAST_ATOMS)
|
||||
#include <X11/SGIFastAtom.h>
|
||||
#else
|
||||
#define XSGIFastInternAtom(dpy,string,fast_name,how) XInternAtom(dpy,string,how)
|
||||
#endif
|
||||
|
||||
#include "glutint.h"
|
||||
|
||||
/* GLUT inter-file variables */
|
||||
/* *INDENT-OFF* */
|
||||
char *__glutProgramName = NULL;
|
||||
int __glutArgc = 0;
|
||||
char **__glutArgv = NULL;
|
||||
char *__glutGeometry = NULL;
|
||||
Display *__glutDisplay = NULL;
|
||||
int __glutScreen;
|
||||
Window __glutRoot;
|
||||
int __glutScreenHeight;
|
||||
int __glutScreenWidth;
|
||||
GLboolean __glutIconic = GL_FALSE;
|
||||
GLboolean __glutDebug = GL_FALSE;
|
||||
unsigned int __glutDisplayMode =
|
||||
GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH;
|
||||
char *__glutDisplayString = NULL;
|
||||
int __glutConnectionFD;
|
||||
XSizeHints __glutSizeHints = {0};
|
||||
int __glutInitWidth = 300, __glutInitHeight = 300;
|
||||
int __glutInitX = -1, __glutInitY = -1;
|
||||
GLboolean __glutForceDirect = GL_FALSE,
|
||||
__glutTryDirect = GL_TRUE;
|
||||
Atom __glutWMDeleteWindow;
|
||||
/* *INDENT-ON* */
|
||||
|
||||
#ifdef _WIN32
|
||||
void (__cdecl *__glutExitFunc)(int retval) = NULL;
|
||||
#endif
|
||||
|
||||
static Bool synchronize = False;
|
||||
|
||||
#if defined(__OS2__)
|
||||
|
||||
MRESULT EXPENTRY GlutWindowProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2 );
|
||||
MRESULT EXPENTRY GlutWindowChildProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2 );
|
||||
|
||||
|
||||
void __glutOpenOS2Connection(char* display)
|
||||
{
|
||||
static char *classname=NULL;
|
||||
extern HAB hab; /* PM anchor block handle */
|
||||
ERRORID erridErrorCode;/* last error id code */
|
||||
int ii;
|
||||
|
||||
/* Make sure we register the window only once. */
|
||||
if(classname)
|
||||
return;
|
||||
|
||||
classname = "GLUT";
|
||||
|
||||
if ( !WinRegisterClass( hab, /* PM anchor block handle */
|
||||
classname,/* window class name */
|
||||
GlutWindowProc,/* address of window procedure*/
|
||||
CS_SIZEREDRAW, /* |CS_SYNCPAINT size changes cause redrawing */
|
||||
0UL ) ) /* window data */
|
||||
{ erridErrorCode = WinGetLastError(hab);
|
||||
ii = erridErrorCode;
|
||||
return;
|
||||
}
|
||||
|
||||
classname = "GLUTCHILD";
|
||||
|
||||
if ( !WinRegisterClass( hab, /* PM anchor block handle */
|
||||
classname,/* window class name */
|
||||
GlutWindowChildProc,/* address of window procedure*/
|
||||
CS_SIZEREDRAW, /* size changes cause redrawing */
|
||||
0UL ) ) /* window data */
|
||||
{ erridErrorCode = WinGetLastError(hab);
|
||||
ii = erridErrorCode;
|
||||
return;
|
||||
}
|
||||
|
||||
__glutScreenWidth = GetSystemMetrics(SM_CXSCREEN);
|
||||
__glutScreenHeight = GetSystemMetrics(SM_CYSCREEN);
|
||||
|
||||
/* Set the root window to NULL because windows creates a top-level
|
||||
window when the parent is NULL. X creates a top-level window
|
||||
when the parent is the root window. */
|
||||
__glutRoot = NULLHANDLE;
|
||||
|
||||
/* Set the display to 1 -- we shouldn't be using this anywhere
|
||||
(except as an argument to X calls). */
|
||||
__glutDisplay = (Display*)1;
|
||||
|
||||
/* There isn't any concept of multiple screens in Win32, therefore,
|
||||
we don't need to keep track of the screen we're on... it's always
|
||||
the same one. */
|
||||
__glutScreen = 0;
|
||||
}
|
||||
|
||||
#elif defined(_WIN32)
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
#include <float.h> /* For masking floating point exceptions. */
|
||||
#endif
|
||||
|
||||
void
|
||||
__glutOpenWin32Connection(char* display)
|
||||
{
|
||||
static char *classname;
|
||||
WNDCLASS wc;
|
||||
HINSTANCE hInstance = GetModuleHandle(NULL);
|
||||
|
||||
/* Make sure we register the window only once. */
|
||||
if(classname)
|
||||
return;
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
/* Under certain conditions (e.g. while rendering solid surfaces with
|
||||
lighting enabled) Microsoft OpenGL libraries cause some illegal
|
||||
operations like floating point overflow or division by zero. The
|
||||
default behaviour of Microsoft compilers is to mask (ignore)
|
||||
floating point exceptions, while Borland compilers do not. The
|
||||
following function of Borland RTL allows to mask exceptions.
|
||||
Advice from Pier Giorgio Esposito (mc2172@mclink.it). */
|
||||
_control87(MCW_EM,MCW_EM);
|
||||
#endif
|
||||
|
||||
classname = "GLUT";
|
||||
|
||||
/* Clear (important!) and then fill in the window class structure. */
|
||||
memset(&wc, 0, sizeof(WNDCLASS));
|
||||
wc.style = CS_OWNDC;
|
||||
wc.lpfnWndProc = (WNDPROC)__glutWindowProc;
|
||||
wc.hInstance = hInstance;
|
||||
wc.hIcon = LoadIcon(hInstance, "GLUT_ICON");
|
||||
wc.hCursor = LoadCursor(hInstance, IDC_ARROW);
|
||||
wc.hbrBackground = NULL;
|
||||
wc.lpszMenuName = NULL;
|
||||
wc.lpszClassName = classname;
|
||||
|
||||
/* Fill in a default icon if one isn't specified as a resource. */
|
||||
if(!wc.hIcon)
|
||||
wc.hIcon = LoadIcon(NULL, IDI_WINLOGO);
|
||||
|
||||
if(!RegisterClass(&wc)) {
|
||||
__glutFatalError("RegisterClass() failed:"
|
||||
"Cannot register GLUT window class.");
|
||||
}
|
||||
|
||||
__glutScreenWidth = GetSystemMetrics(SM_CXSCREEN);
|
||||
__glutScreenHeight = GetSystemMetrics(SM_CYSCREEN);
|
||||
|
||||
/* Set the root window to NULL because windows creates a top-level
|
||||
window when the parent is NULL. X creates a top-level window
|
||||
when the parent is the root window. */
|
||||
__glutRoot = NULL;
|
||||
|
||||
/* Set the display to 1 -- we shouldn't be using this anywhere
|
||||
(except as an argument to X calls). */
|
||||
__glutDisplay = (Display*)1;
|
||||
|
||||
/* There isn't any concept of multiple screens in Win32, therefore,
|
||||
we don't need to keep track of the screen we're on... it's always
|
||||
the same one. */
|
||||
__glutScreen = 0;
|
||||
}
|
||||
#else /* !_WIN32 */
|
||||
void
|
||||
__glutOpenXConnection(char *display)
|
||||
{
|
||||
int errorBase, eventBase;
|
||||
|
||||
__glutDisplay = XOpenDisplay(display);
|
||||
if (!__glutDisplay)
|
||||
__glutFatalError("could not open display: %s",
|
||||
XDisplayName(display));
|
||||
if (synchronize)
|
||||
XSynchronize(__glutDisplay, True);
|
||||
if (!glXQueryExtension(__glutDisplay, &errorBase, &eventBase))
|
||||
__glutFatalError(
|
||||
"OpenGL GLX extension not supported by display: %s",
|
||||
XDisplayName(display));
|
||||
__glutScreen = DefaultScreen(__glutDisplay);
|
||||
__glutRoot = RootWindow(__glutDisplay, __glutScreen);
|
||||
__glutScreenWidth = DisplayWidth(__glutDisplay, __glutScreen);
|
||||
__glutScreenHeight = DisplayHeight(__glutDisplay,
|
||||
__glutScreen);
|
||||
__glutConnectionFD = ConnectionNumber(__glutDisplay);
|
||||
__glutWMDeleteWindow = XSGIFastInternAtom(__glutDisplay,
|
||||
"WM_DELETE_WINDOW", SGI_XA_WM_DELETE_WINDOW, False);
|
||||
}
|
||||
#endif /* _WIN32 */
|
||||
|
||||
void
|
||||
#ifdef OLD_VMS
|
||||
__glutInitTime(struct timeval6 *beginning)
|
||||
#else
|
||||
__glutInitTime(struct timeval *beginning)
|
||||
#endif
|
||||
{
|
||||
static int beenhere = 0;
|
||||
#ifdef OLD_VMS
|
||||
static struct timeval6 genesis;
|
||||
#else
|
||||
static struct timeval genesis;
|
||||
#endif
|
||||
|
||||
if (!beenhere) {
|
||||
GETTIMEOFDAY(&genesis);
|
||||
beenhere = 1;
|
||||
}
|
||||
*beginning = genesis;
|
||||
}
|
||||
|
||||
static void
|
||||
removeArgs(int *argcp, char **argv, int numToRemove)
|
||||
{
|
||||
int i, j;
|
||||
|
||||
for (i = 0, j = numToRemove; argv[j]; i++, j++) {
|
||||
argv[i] = argv[j];
|
||||
}
|
||||
argv[i] = NULL;
|
||||
*argcp -= numToRemove;
|
||||
}
|
||||
|
||||
void GLUTAPIENTRY
|
||||
glutInit(int *argcp, char **argv)
|
||||
{
|
||||
char *display = NULL;
|
||||
char *str, *geometry = NULL;
|
||||
#ifdef OLD_VMS
|
||||
struct timeval6 unused;
|
||||
#else
|
||||
struct timeval unused;
|
||||
#endif
|
||||
int i;
|
||||
|
||||
if (__glutDisplay) {
|
||||
__glutWarning("glutInit being called a second time.");
|
||||
return;
|
||||
}
|
||||
/* Determine temporary program name. */
|
||||
str = strrchr(argv[0], '/');
|
||||
if (str == NULL) {
|
||||
__glutProgramName = argv[0];
|
||||
} else {
|
||||
__glutProgramName = str + 1;
|
||||
}
|
||||
|
||||
/* Make private copy of command line arguments. */
|
||||
__glutArgc = *argcp;
|
||||
__glutArgv = (char **) malloc(__glutArgc * sizeof(char *));
|
||||
if (!__glutArgv)
|
||||
__glutFatalError("out of memory.");
|
||||
for (i = 0; i < __glutArgc; i++) {
|
||||
__glutArgv[i] = __glutStrdup(argv[i]);
|
||||
if (!__glutArgv[i])
|
||||
__glutFatalError("out of memory.");
|
||||
}
|
||||
|
||||
/* determine permanent program name */
|
||||
str = strrchr(__glutArgv[0], '/');
|
||||
if (str == NULL) {
|
||||
__glutProgramName = __glutArgv[0];
|
||||
} else {
|
||||
__glutProgramName = str + 1;
|
||||
}
|
||||
|
||||
/* parse arguments for standard options */
|
||||
for (i = 1; i < __glutArgc; i++) {
|
||||
if (!strcmp(__glutArgv[i], "-display")) {
|
||||
#if defined(_WIN32)
|
||||
__glutWarning("-display option not supported by Win32 GLUT.");
|
||||
#endif
|
||||
if (++i >= __glutArgc) {
|
||||
__glutFatalError(
|
||||
"follow -display option with X display name.");
|
||||
}
|
||||
display = __glutArgv[i];
|
||||
removeArgs(argcp, &argv[1], 2);
|
||||
} else if (!strcmp(__glutArgv[i], "-geometry")) {
|
||||
if (++i >= __glutArgc) {
|
||||
__glutFatalError(
|
||||
"follow -geometry option with geometry parameter.");
|
||||
}
|
||||
geometry = __glutArgv[i];
|
||||
removeArgs(argcp, &argv[1], 2);
|
||||
} else if (!strcmp(__glutArgv[i], "-direct")) {
|
||||
#if defined(_WIN32)
|
||||
__glutWarning("-direct option not supported by Win32 GLUT.");
|
||||
#endif
|
||||
if (!__glutTryDirect)
|
||||
__glutFatalError(
|
||||
"cannot force both direct and indirect rendering.");
|
||||
__glutForceDirect = GL_TRUE;
|
||||
removeArgs(argcp, &argv[1], 1);
|
||||
} else if (!strcmp(__glutArgv[i], "-indirect")) {
|
||||
#if defined(_WIN32)
|
||||
__glutWarning("-indirect option not supported by Win32 GLUT.");
|
||||
#endif
|
||||
if (__glutForceDirect)
|
||||
__glutFatalError(
|
||||
"cannot force both direct and indirect rendering.");
|
||||
__glutTryDirect = GL_FALSE;
|
||||
removeArgs(argcp, &argv[1], 1);
|
||||
} else if (!strcmp(__glutArgv[i], "-iconic")) {
|
||||
__glutIconic = GL_TRUE;
|
||||
removeArgs(argcp, &argv[1], 1);
|
||||
} else if (!strcmp(__glutArgv[i], "-gldebug")) {
|
||||
__glutDebug = GL_TRUE;
|
||||
removeArgs(argcp, &argv[1], 1);
|
||||
} else if (!strcmp(__glutArgv[i], "-sync")) {
|
||||
#if defined(_WIN32)
|
||||
__glutWarning("-sync option not supported by Win32 GLUT.");
|
||||
#endif
|
||||
synchronize = GL_TRUE;
|
||||
removeArgs(argcp, &argv[1], 1);
|
||||
} else {
|
||||
/* Once unknown option encountered, stop command line
|
||||
processing. */
|
||||
break;
|
||||
}
|
||||
}
|
||||
#if defined(__OS2__)
|
||||
__glutOpenOS2Connection(display);
|
||||
#elif defined(_WIN32)
|
||||
__glutOpenWin32Connection(display);
|
||||
#else
|
||||
__glutOpenXConnection(display);
|
||||
#endif
|
||||
if (geometry) {
|
||||
int flags, x, y, width, height;
|
||||
|
||||
/* Fix bogus "{width|height} may be used before set"
|
||||
warning */
|
||||
width = 0;
|
||||
height = 0;
|
||||
|
||||
flags = XParseGeometry(geometry, &x, &y,
|
||||
(unsigned int *) &width, (unsigned int *) &height);
|
||||
if (WidthValue & flags) {
|
||||
/* Careful because X does not allow zero or negative
|
||||
width windows */
|
||||
if (width > 0)
|
||||
__glutInitWidth = width;
|
||||
}
|
||||
if (HeightValue & flags) {
|
||||
/* Careful because X does not allow zero or negative
|
||||
height windows */
|
||||
if (height > 0)
|
||||
__glutInitHeight = height;
|
||||
}
|
||||
glutInitWindowSize(__glutInitWidth, __glutInitHeight);
|
||||
if (XValue & flags) {
|
||||
if (XNegative & flags)
|
||||
x = DisplayWidth(__glutDisplay, __glutScreen) +
|
||||
x - __glutSizeHints.width;
|
||||
/* Play safe: reject negative X locations */
|
||||
if (x >= 0)
|
||||
__glutInitX = x;
|
||||
}
|
||||
if (YValue & flags) {
|
||||
if (YNegative & flags)
|
||||
y = DisplayHeight(__glutDisplay, __glutScreen) +
|
||||
y - __glutSizeHints.height;
|
||||
/* Play safe: reject negative Y locations */
|
||||
if (y >= 0)
|
||||
__glutInitY = y;
|
||||
}
|
||||
glutInitWindowPosition(__glutInitX, __glutInitY);
|
||||
}
|
||||
__glutInitTime(&unused);
|
||||
|
||||
/* check if GLUT_FPS env var is set */
|
||||
{
|
||||
const char *fps = getenv("GLUT_FPS");
|
||||
if (fps) {
|
||||
sscanf(fps, "%d", &__glutFPS);
|
||||
if (__glutFPS <= 0)
|
||||
__glutFPS = 5000; /* 5000 milliseconds */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
void APIENTRY
|
||||
__glutInitWithExit(int *argcp, char **argv, void (__cdecl *exitfunc)(int))
|
||||
{
|
||||
__glutExitFunc = exitfunc;
|
||||
glutInit(argcp, argv);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* CENTRY */
|
||||
void GLUTAPIENTRY
|
||||
glutInitWindowPosition(int x, int y)
|
||||
{
|
||||
__glutInitX = x;
|
||||
__glutInitY = y;
|
||||
if (x >= 0 && y >= 0) {
|
||||
__glutSizeHints.x = x;
|
||||
__glutSizeHints.y = y;
|
||||
__glutSizeHints.flags |= USPosition;
|
||||
} else {
|
||||
__glutSizeHints.flags &= ~USPosition;
|
||||
}
|
||||
}
|
||||
|
||||
void GLUTAPIENTRY
|
||||
glutInitWindowSize(int width, int height)
|
||||
{
|
||||
__glutInitWidth = width;
|
||||
__glutInitHeight = height;
|
||||
if (width > 0 && height > 0) {
|
||||
__glutSizeHints.width = width;
|
||||
__glutSizeHints.height = height;
|
||||
__glutSizeHints.flags |= USSize;
|
||||
} else {
|
||||
__glutSizeHints.flags &= ~USSize;
|
||||
}
|
||||
}
|
||||
|
||||
void GLUTAPIENTRY
|
||||
glutInitDisplayMode(unsigned int mask)
|
||||
{
|
||||
__glutDisplayMode = mask;
|
||||
}
|
||||
|
||||
/* ENDCENTRY */
|
||||
|
||||
/* Copyright (c) Mark J. Kilgard, 1994, 1997. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#ifdef __VMS
|
||||
#include <GL/vms_x_fix.h>
|
||||
#endif
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#if !defined(_WIN32) && !defined(__OS2__)
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xatom.h>
|
||||
#endif
|
||||
|
||||
/* SGI optimization introduced in IRIX 6.3 to avoid X server
|
||||
round trips for interning common X atoms. */
|
||||
#if defined(_SGI_EXTRA_PREDEFINES) && !defined(NO_FAST_ATOMS)
|
||||
#include <X11/SGIFastAtom.h>
|
||||
#else
|
||||
#define XSGIFastInternAtom(dpy,string,fast_name,how) XInternAtom(dpy,string,how)
|
||||
#endif
|
||||
|
||||
#include "glutint.h"
|
||||
|
||||
/* GLUT inter-file variables */
|
||||
/* *INDENT-OFF* */
|
||||
char *__glutProgramName = NULL;
|
||||
int __glutArgc = 0;
|
||||
char **__glutArgv = NULL;
|
||||
char *__glutGeometry = NULL;
|
||||
Display *__glutDisplay = NULL;
|
||||
int __glutScreen;
|
||||
Window __glutRoot;
|
||||
int __glutScreenHeight;
|
||||
int __glutScreenWidth;
|
||||
GLboolean __glutIconic = GL_FALSE;
|
||||
GLboolean __glutDebug = GL_FALSE;
|
||||
unsigned int __glutDisplayMode =
|
||||
GLUT_RGB | GLUT_SINGLE | GLUT_DEPTH;
|
||||
char *__glutDisplayString = NULL;
|
||||
int __glutConnectionFD;
|
||||
XSizeHints __glutSizeHints = {0};
|
||||
int __glutInitWidth = 300, __glutInitHeight = 300;
|
||||
int __glutInitX = -1, __glutInitY = -1;
|
||||
GLboolean __glutForceDirect = GL_FALSE,
|
||||
__glutTryDirect = GL_TRUE;
|
||||
Atom __glutWMDeleteWindow;
|
||||
/* *INDENT-ON* */
|
||||
|
||||
#ifdef _WIN32
|
||||
void (__cdecl *__glutExitFunc)(int retval) = NULL;
|
||||
#endif
|
||||
|
||||
static Bool synchronize = False;
|
||||
|
||||
#if defined(__OS2__)
|
||||
|
||||
MRESULT EXPENTRY GlutWindowProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2 );
|
||||
MRESULT EXPENTRY GlutWindowChildProc( HWND hwnd, ULONG msg, MPARAM mp1, MPARAM mp2 );
|
||||
|
||||
|
||||
void __glutOpenOS2Connection(char* display)
|
||||
{
|
||||
static char *classname=NULL;
|
||||
extern HAB hab; /* PM anchor block handle */
|
||||
ERRORID erridErrorCode;/* last error id code */
|
||||
int ii;
|
||||
|
||||
/* Make sure we register the window only once. */
|
||||
if(classname)
|
||||
return;
|
||||
|
||||
classname = "GLUT";
|
||||
|
||||
if ( !WinRegisterClass( hab, /* PM anchor block handle */
|
||||
classname,/* window class name */
|
||||
GlutWindowProc,/* address of window procedure*/
|
||||
CS_SIZEREDRAW, /* |CS_SYNCPAINT size changes cause redrawing */
|
||||
0UL ) ) /* window data */
|
||||
{ erridErrorCode = WinGetLastError(hab);
|
||||
ii = erridErrorCode;
|
||||
return;
|
||||
}
|
||||
|
||||
classname = "GLUTCHILD";
|
||||
|
||||
if ( !WinRegisterClass( hab, /* PM anchor block handle */
|
||||
classname,/* window class name */
|
||||
GlutWindowChildProc,/* address of window procedure*/
|
||||
CS_SIZEREDRAW, /* size changes cause redrawing */
|
||||
0UL ) ) /* window data */
|
||||
{ erridErrorCode = WinGetLastError(hab);
|
||||
ii = erridErrorCode;
|
||||
return;
|
||||
}
|
||||
|
||||
__glutScreenWidth = GetSystemMetrics(SM_CXSCREEN);
|
||||
__glutScreenHeight = GetSystemMetrics(SM_CYSCREEN);
|
||||
|
||||
/* Set the root window to NULL because windows creates a top-level
|
||||
window when the parent is NULL. X creates a top-level window
|
||||
when the parent is the root window. */
|
||||
__glutRoot = NULLHANDLE;
|
||||
|
||||
/* Set the display to 1 -- we shouldn't be using this anywhere
|
||||
(except as an argument to X calls). */
|
||||
__glutDisplay = (Display*)1;
|
||||
|
||||
/* There isn't any concept of multiple screens in Win32, therefore,
|
||||
we don't need to keep track of the screen we're on... it's always
|
||||
the same one. */
|
||||
__glutScreen = 0;
|
||||
}
|
||||
|
||||
#elif defined(_WIN32)
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
#include <float.h> /* For masking floating point exceptions. */
|
||||
#endif
|
||||
|
||||
void
|
||||
__glutOpenWin32Connection(char* display)
|
||||
{
|
||||
static char *classname;
|
||||
WNDCLASS wc;
|
||||
HINSTANCE hInstance = GetModuleHandle(NULL);
|
||||
|
||||
/* Make sure we register the window only once. */
|
||||
if(classname)
|
||||
return;
|
||||
|
||||
#ifdef __BORLANDC__
|
||||
/* Under certain conditions (e.g. while rendering solid surfaces with
|
||||
lighting enabled) Microsoft OpenGL libraries cause some illegal
|
||||
operations like floating point overflow or division by zero. The
|
||||
default behaviour of Microsoft compilers is to mask (ignore)
|
||||
floating point exceptions, while Borland compilers do not. The
|
||||
following function of Borland RTL allows to mask exceptions.
|
||||
Advice from Pier Giorgio Esposito (mc2172@mclink.it). */
|
||||
_control87(MCW_EM,MCW_EM);
|
||||
#endif
|
||||
|
||||
classname = "GLUT";
|
||||
|
||||
/* Clear (important!) and then fill in the window class structure. */
|
||||
memset(&wc, 0, sizeof(WNDCLASS));
|
||||
wc.style = CS_OWNDC;
|
||||
wc.lpfnWndProc = (WNDPROC)__glutWindowProc;
|
||||
wc.hInstance = hInstance;
|
||||
wc.hIcon = LoadIcon(hInstance, "GLUT_ICON");
|
||||
wc.hCursor = LoadCursor(hInstance, IDC_ARROW);
|
||||
wc.hbrBackground = NULL;
|
||||
wc.lpszMenuName = NULL;
|
||||
wc.lpszClassName = classname;
|
||||
|
||||
/* Fill in a default icon if one isn't specified as a resource. */
|
||||
if(!wc.hIcon)
|
||||
wc.hIcon = LoadIcon(NULL, IDI_WINLOGO);
|
||||
|
||||
if(!RegisterClass(&wc)) {
|
||||
__glutFatalError("RegisterClass() failed:"
|
||||
"Cannot register GLUT window class.");
|
||||
}
|
||||
|
||||
__glutScreenWidth = GetSystemMetrics(SM_CXSCREEN);
|
||||
__glutScreenHeight = GetSystemMetrics(SM_CYSCREEN);
|
||||
|
||||
/* Set the root window to NULL because windows creates a top-level
|
||||
window when the parent is NULL. X creates a top-level window
|
||||
when the parent is the root window. */
|
||||
__glutRoot = NULL;
|
||||
|
||||
/* Set the display to 1 -- we shouldn't be using this anywhere
|
||||
(except as an argument to X calls). */
|
||||
__glutDisplay = (Display*)1;
|
||||
|
||||
/* There isn't any concept of multiple screens in Win32, therefore,
|
||||
we don't need to keep track of the screen we're on... it's always
|
||||
the same one. */
|
||||
__glutScreen = 0;
|
||||
}
|
||||
#else /* !_WIN32 */
|
||||
void
|
||||
__glutOpenXConnection(char *display)
|
||||
{
|
||||
int errorBase, eventBase;
|
||||
|
||||
__glutDisplay = XOpenDisplay(display);
|
||||
if (!__glutDisplay)
|
||||
__glutFatalError("could not open display: %s",
|
||||
XDisplayName(display));
|
||||
if (synchronize)
|
||||
XSynchronize(__glutDisplay, True);
|
||||
if (!glXQueryExtension(__glutDisplay, &errorBase, &eventBase))
|
||||
__glutFatalError(
|
||||
"OpenGL GLX extension not supported by display: %s",
|
||||
XDisplayName(display));
|
||||
__glutScreen = DefaultScreen(__glutDisplay);
|
||||
__glutRoot = RootWindow(__glutDisplay, __glutScreen);
|
||||
__glutScreenWidth = DisplayWidth(__glutDisplay, __glutScreen);
|
||||
__glutScreenHeight = DisplayHeight(__glutDisplay,
|
||||
__glutScreen);
|
||||
__glutConnectionFD = ConnectionNumber(__glutDisplay);
|
||||
__glutWMDeleteWindow = XSGIFastInternAtom(__glutDisplay,
|
||||
"WM_DELETE_WINDOW", SGI_XA_WM_DELETE_WINDOW, False);
|
||||
}
|
||||
#endif /* _WIN32 */
|
||||
|
||||
void
|
||||
#ifdef OLD_VMS
|
||||
__glutInitTime(struct timeval6 *beginning)
|
||||
#else
|
||||
__glutInitTime(struct timeval *beginning)
|
||||
#endif
|
||||
{
|
||||
static int beenhere = 0;
|
||||
#ifdef OLD_VMS
|
||||
static struct timeval6 genesis;
|
||||
#else
|
||||
static struct timeval genesis;
|
||||
#endif
|
||||
|
||||
if (!beenhere) {
|
||||
GETTIMEOFDAY(&genesis);
|
||||
beenhere = 1;
|
||||
}
|
||||
*beginning = genesis;
|
||||
}
|
||||
|
||||
static void
|
||||
removeArgs(int *argcp, char **argv, int numToRemove)
|
||||
{
|
||||
int i, j;
|
||||
|
||||
for (i = 0, j = numToRemove; argv[j]; i++, j++) {
|
||||
argv[i] = argv[j];
|
||||
}
|
||||
argv[i] = NULL;
|
||||
*argcp -= numToRemove;
|
||||
}
|
||||
|
||||
void GLUTAPIENTRY
|
||||
glutInit(int *argcp, char **argv)
|
||||
{
|
||||
char *display = NULL;
|
||||
char *str, *geometry = NULL;
|
||||
#ifdef OLD_VMS
|
||||
struct timeval6 unused;
|
||||
#else
|
||||
struct timeval unused;
|
||||
#endif
|
||||
int i;
|
||||
|
||||
if (__glutDisplay) {
|
||||
__glutWarning("glutInit being called a second time.");
|
||||
return;
|
||||
}
|
||||
/* Determine temporary program name. */
|
||||
str = strrchr(argv[0], '/');
|
||||
if (str == NULL) {
|
||||
__glutProgramName = argv[0];
|
||||
} else {
|
||||
__glutProgramName = str + 1;
|
||||
}
|
||||
|
||||
/* Make private copy of command line arguments. */
|
||||
__glutArgc = *argcp;
|
||||
__glutArgv = (char **) malloc(__glutArgc * sizeof(char *));
|
||||
if (!__glutArgv)
|
||||
__glutFatalError("out of memory.");
|
||||
for (i = 0; i < __glutArgc; i++) {
|
||||
__glutArgv[i] = __glutStrdup(argv[i]);
|
||||
if (!__glutArgv[i])
|
||||
__glutFatalError("out of memory.");
|
||||
}
|
||||
|
||||
/* determine permanent program name */
|
||||
str = strrchr(__glutArgv[0], '/');
|
||||
if (str == NULL) {
|
||||
__glutProgramName = __glutArgv[0];
|
||||
} else {
|
||||
__glutProgramName = str + 1;
|
||||
}
|
||||
|
||||
/* parse arguments for standard options */
|
||||
for (i = 1; i < __glutArgc; i++) {
|
||||
if (!strcmp(__glutArgv[i], "-display")) {
|
||||
#if defined(_WIN32)
|
||||
__glutWarning("-display option not supported by Win32 GLUT.");
|
||||
#endif
|
||||
if (++i >= __glutArgc) {
|
||||
__glutFatalError(
|
||||
"follow -display option with X display name.");
|
||||
}
|
||||
display = __glutArgv[i];
|
||||
removeArgs(argcp, &argv[1], 2);
|
||||
} else if (!strcmp(__glutArgv[i], "-geometry")) {
|
||||
if (++i >= __glutArgc) {
|
||||
__glutFatalError(
|
||||
"follow -geometry option with geometry parameter.");
|
||||
}
|
||||
geometry = __glutArgv[i];
|
||||
removeArgs(argcp, &argv[1], 2);
|
||||
} else if (!strcmp(__glutArgv[i], "-direct")) {
|
||||
#if defined(_WIN32)
|
||||
__glutWarning("-direct option not supported by Win32 GLUT.");
|
||||
#endif
|
||||
if (!__glutTryDirect)
|
||||
__glutFatalError(
|
||||
"cannot force both direct and indirect rendering.");
|
||||
__glutForceDirect = GL_TRUE;
|
||||
removeArgs(argcp, &argv[1], 1);
|
||||
} else if (!strcmp(__glutArgv[i], "-indirect")) {
|
||||
#if defined(_WIN32)
|
||||
__glutWarning("-indirect option not supported by Win32 GLUT.");
|
||||
#endif
|
||||
if (__glutForceDirect)
|
||||
__glutFatalError(
|
||||
"cannot force both direct and indirect rendering.");
|
||||
__glutTryDirect = GL_FALSE;
|
||||
removeArgs(argcp, &argv[1], 1);
|
||||
} else if (!strcmp(__glutArgv[i], "-iconic")) {
|
||||
__glutIconic = GL_TRUE;
|
||||
removeArgs(argcp, &argv[1], 1);
|
||||
} else if (!strcmp(__glutArgv[i], "-gldebug")) {
|
||||
__glutDebug = GL_TRUE;
|
||||
removeArgs(argcp, &argv[1], 1);
|
||||
} else if (!strcmp(__glutArgv[i], "-sync")) {
|
||||
#if defined(_WIN32)
|
||||
__glutWarning("-sync option not supported by Win32 GLUT.");
|
||||
#endif
|
||||
synchronize = GL_TRUE;
|
||||
removeArgs(argcp, &argv[1], 1);
|
||||
} else {
|
||||
/* Once unknown option encountered, stop command line
|
||||
processing. */
|
||||
break;
|
||||
}
|
||||
}
|
||||
#if defined(__OS2__)
|
||||
__glutOpenOS2Connection(display);
|
||||
#elif defined(_WIN32)
|
||||
__glutOpenWin32Connection(display);
|
||||
#else
|
||||
__glutOpenXConnection(display);
|
||||
#endif
|
||||
if (geometry) {
|
||||
int flags, x, y, width, height;
|
||||
|
||||
/* Fix bogus "{width|height} may be used before set"
|
||||
warning */
|
||||
width = 0;
|
||||
height = 0;
|
||||
|
||||
flags = XParseGeometry(geometry, &x, &y,
|
||||
(unsigned int *) &width, (unsigned int *) &height);
|
||||
if (WidthValue & flags) {
|
||||
/* Careful because X does not allow zero or negative
|
||||
width windows */
|
||||
if (width > 0)
|
||||
__glutInitWidth = width;
|
||||
}
|
||||
if (HeightValue & flags) {
|
||||
/* Careful because X does not allow zero or negative
|
||||
height windows */
|
||||
if (height > 0)
|
||||
__glutInitHeight = height;
|
||||
}
|
||||
glutInitWindowSize(__glutInitWidth, __glutInitHeight);
|
||||
if (XValue & flags) {
|
||||
if (XNegative & flags)
|
||||
x = DisplayWidth(__glutDisplay, __glutScreen) +
|
||||
x - __glutSizeHints.width;
|
||||
/* Play safe: reject negative X locations */
|
||||
if (x >= 0)
|
||||
__glutInitX = x;
|
||||
}
|
||||
if (YValue & flags) {
|
||||
if (YNegative & flags)
|
||||
y = DisplayHeight(__glutDisplay, __glutScreen) +
|
||||
y - __glutSizeHints.height;
|
||||
/* Play safe: reject negative Y locations */
|
||||
if (y >= 0)
|
||||
__glutInitY = y;
|
||||
}
|
||||
glutInitWindowPosition(__glutInitX, __glutInitY);
|
||||
}
|
||||
__glutInitTime(&unused);
|
||||
|
||||
/* check if GLUT_FPS env var is set */
|
||||
{
|
||||
const char *fps = getenv("GLUT_FPS");
|
||||
if (fps) {
|
||||
sscanf(fps, "%d", &__glutFPS);
|
||||
if (__glutFPS <= 0)
|
||||
__glutFPS = 5000; /* 5000 milliseconds */
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#ifdef _WIN32
|
||||
void APIENTRY
|
||||
__glutInitWithExit(int *argcp, char **argv, void (__cdecl *exitfunc)(int))
|
||||
{
|
||||
__glutExitFunc = exitfunc;
|
||||
glutInit(argcp, argv);
|
||||
}
|
||||
#endif
|
||||
|
||||
/* CENTRY */
|
||||
void GLUTAPIENTRY
|
||||
glutInitWindowPosition(int x, int y)
|
||||
{
|
||||
__glutInitX = x;
|
||||
__glutInitY = y;
|
||||
if (x >= 0 && y >= 0) {
|
||||
__glutSizeHints.x = x;
|
||||
__glutSizeHints.y = y;
|
||||
__glutSizeHints.flags |= USPosition;
|
||||
} else {
|
||||
__glutSizeHints.flags &= ~USPosition;
|
||||
}
|
||||
}
|
||||
|
||||
void GLUTAPIENTRY
|
||||
glutInitWindowSize(int width, int height)
|
||||
{
|
||||
__glutInitWidth = width;
|
||||
__glutInitHeight = height;
|
||||
if (width > 0 && height > 0) {
|
||||
__glutSizeHints.width = width;
|
||||
__glutSizeHints.height = height;
|
||||
__glutSizeHints.flags |= USSize;
|
||||
} else {
|
||||
__glutSizeHints.flags &= ~USSize;
|
||||
}
|
||||
}
|
||||
|
||||
void GLUTAPIENTRY
|
||||
glutInitDisplayMode(unsigned int mask)
|
||||
{
|
||||
__glutDisplayMode = mask;
|
||||
}
|
||||
|
||||
/* ENDCENTRY */
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,29 +1,29 @@
|
|||
|
||||
/* Copyright (c) Mark J. Kilgard, 1997. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "glutint.h"
|
||||
|
||||
/* CENTRY */
|
||||
void GLUTAPIENTRY
|
||||
glutKeyboardFunc(GLUTkeyboardCB keyboardFunc)
|
||||
{
|
||||
__glutChangeWindowEventMask(KeyPressMask,
|
||||
keyboardFunc != NULL || __glutCurrentWindow->special != NULL);
|
||||
__glutCurrentWindow->keyboard = keyboardFunc;
|
||||
}
|
||||
|
||||
void GLUTAPIENTRY
|
||||
glutSpecialFunc(GLUTspecialCB specialFunc)
|
||||
{
|
||||
__glutChangeWindowEventMask(KeyPressMask,
|
||||
specialFunc != NULL || __glutCurrentWindow->keyboard != NULL);
|
||||
__glutCurrentWindow->special = specialFunc;
|
||||
}
|
||||
|
||||
/* ENDCENTRY */
|
||||
|
||||
/* Copyright (c) Mark J. Kilgard, 1997. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "glutint.h"
|
||||
|
||||
/* CENTRY */
|
||||
void GLUTAPIENTRY
|
||||
glutKeyboardFunc(GLUTkeyboardCB keyboardFunc)
|
||||
{
|
||||
__glutChangeWindowEventMask(KeyPressMask,
|
||||
keyboardFunc != NULL || __glutCurrentWindow->special != NULL);
|
||||
__glutCurrentWindow->keyboard = keyboardFunc;
|
||||
}
|
||||
|
||||
void GLUTAPIENTRY
|
||||
glutSpecialFunc(GLUTspecialCB specialFunc)
|
||||
{
|
||||
__glutChangeWindowEventMask(KeyPressMask,
|
||||
specialFunc != NULL || __glutCurrentWindow->keyboard != NULL);
|
||||
__glutCurrentWindow->special = specialFunc;
|
||||
}
|
||||
|
||||
/* ENDCENTRY */
|
||||
|
|
|
@ -1,29 +1,29 @@
|
|||
|
||||
/* Copyright (c) Mark J. Kilgard, 1996, 1997. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include "glutint.h"
|
||||
|
||||
/* CENTRY */
|
||||
void GLUTAPIENTRY
|
||||
glutIgnoreKeyRepeat(int ignore)
|
||||
{
|
||||
__glutCurrentWindow->ignoreKeyRepeat = ignore;
|
||||
}
|
||||
|
||||
void GLUTAPIENTRY
|
||||
glutSetKeyRepeat(int repeatMode)
|
||||
{
|
||||
#if !defined(_WIN32) && !defined(__OS2PM__)
|
||||
XKeyboardControl values;
|
||||
|
||||
/* GLUT's repeatMode #define's match the Xlib API values. */
|
||||
values.auto_repeat_mode = repeatMode;
|
||||
XChangeKeyboardControl(__glutDisplay, KBAutoRepeatMode, &values);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* ENDCENTRY */
|
||||
|
||||
/* Copyright (c) Mark J. Kilgard, 1996, 1997. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include "glutint.h"
|
||||
|
||||
/* CENTRY */
|
||||
void GLUTAPIENTRY
|
||||
glutIgnoreKeyRepeat(int ignore)
|
||||
{
|
||||
__glutCurrentWindow->ignoreKeyRepeat = ignore;
|
||||
}
|
||||
|
||||
void GLUTAPIENTRY
|
||||
glutSetKeyRepeat(int repeatMode)
|
||||
{
|
||||
#if !defined(_WIN32) && !defined(__OS2PM__)
|
||||
XKeyboardControl values;
|
||||
|
||||
/* GLUT's repeatMode #define's match the Xlib API values. */
|
||||
values.auto_repeat_mode = repeatMode;
|
||||
XChangeKeyboardControl(__glutDisplay, KBAutoRepeatMode, &values);
|
||||
#endif
|
||||
}
|
||||
|
||||
/* ENDCENTRY */
|
||||
|
|
|
@ -1,29 +1,29 @@
|
|||
|
||||
/* Copyright (c) Mark J. Kilgard, 1997. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "glutint.h"
|
||||
|
||||
/* CENTRY */
|
||||
void GLUTAPIENTRY
|
||||
glutKeyboardUpFunc(GLUTkeyboardCB keyboardUpFunc)
|
||||
{
|
||||
__glutChangeWindowEventMask(KeyReleaseMask,
|
||||
keyboardUpFunc != NULL || __glutCurrentWindow->specialUp != NULL);
|
||||
__glutCurrentWindow->keyboardUp = keyboardUpFunc;
|
||||
}
|
||||
|
||||
void GLUTAPIENTRY
|
||||
glutSpecialUpFunc(GLUTspecialCB specialUpFunc)
|
||||
{
|
||||
__glutChangeWindowEventMask(KeyReleaseMask,
|
||||
specialUpFunc != NULL || __glutCurrentWindow->keyboardUp != NULL);
|
||||
__glutCurrentWindow->specialUp = specialUpFunc;
|
||||
}
|
||||
|
||||
/* ENDCENTRY */
|
||||
|
||||
/* Copyright (c) Mark J. Kilgard, 1997. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#include "glutint.h"
|
||||
|
||||
/* CENTRY */
|
||||
void GLUTAPIENTRY
|
||||
glutKeyboardUpFunc(GLUTkeyboardCB keyboardUpFunc)
|
||||
{
|
||||
__glutChangeWindowEventMask(KeyReleaseMask,
|
||||
keyboardUpFunc != NULL || __glutCurrentWindow->specialUp != NULL);
|
||||
__glutCurrentWindow->keyboardUp = keyboardUpFunc;
|
||||
}
|
||||
|
||||
void GLUTAPIENTRY
|
||||
glutSpecialUpFunc(GLUTspecialCB specialUpFunc)
|
||||
{
|
||||
__glutChangeWindowEventMask(KeyReleaseMask,
|
||||
specialUpFunc != NULL || __glutCurrentWindow->keyboardUp != NULL);
|
||||
__glutCurrentWindow->specialUp = specialUpFunc;
|
||||
}
|
||||
|
||||
/* ENDCENTRY */
|
||||
|
|
|
@ -1,57 +1,57 @@
|
|||
|
||||
/* Copyright (c) Mark J. Kilgard, 1996. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "glutint.h"
|
||||
|
||||
int __glutMesaSwapHackSupport = 0; /* Not supported until
|
||||
proven otherwise. */
|
||||
|
||||
/* Use the "Mesa swap hack" if reasonable if and only if
|
||||
MESA_SWAP_HACK is set to something whose first character is
|
||||
not "N" or "n" AND "Brian Paul" is the vendor string AND
|
||||
"Mesa X11"* (or "Mesa" for backward compatibility) is the
|
||||
renderer string.
|
||||
|
||||
Anyone who modifies Mesa so that glXSwapBuffers does not
|
||||
simply blit the previously rendered back buffer should
|
||||
change either their vendor or renderer string to avoid
|
||||
confusing GLUT. */
|
||||
|
||||
void
|
||||
__glutDetermineMesaSwapHackSupport(void)
|
||||
{
|
||||
static int doneAlready = 0;
|
||||
char *env, *vendor, *renderer;
|
||||
|
||||
if (doneAlready)
|
||||
return;
|
||||
env = getenv("MESA_SWAP_HACK");
|
||||
if (env) {
|
||||
if ((env[0] != 'n') && (env[0] != 'N')) {
|
||||
vendor = (char *) glGetString(GL_VENDOR);
|
||||
renderer = (char *) glGetString(GL_RENDERER);
|
||||
|
||||
/* Old versions of X11 Mesa uses the renderer string
|
||||
"Mesa"; Brian plans to start using "Mesa X11" to
|
||||
distinguish the X version of Mesa from other flavor
|
||||
such as Windows or 3Dfx. */
|
||||
|
||||
#define MESA_X11 "Mesa X11"
|
||||
|
||||
/* XXX At some point in the future, eliminate the
|
||||
backward compatibility for the old "Mesa" renderer
|
||||
string. */
|
||||
|
||||
if (!strcmp(vendor, "Brian Paul") && (!strcmp(renderer, "Mesa") ||
|
||||
!strncmp(renderer, MESA_X11, sizeof(MESA_X11) - 1)))
|
||||
__glutMesaSwapHackSupport = 1;
|
||||
}
|
||||
}
|
||||
doneAlready = 1;
|
||||
}
|
||||
|
||||
/* Copyright (c) Mark J. Kilgard, 1996. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include "glutint.h"
|
||||
|
||||
int __glutMesaSwapHackSupport = 0; /* Not supported until
|
||||
proven otherwise. */
|
||||
|
||||
/* Use the "Mesa swap hack" if reasonable if and only if
|
||||
MESA_SWAP_HACK is set to something whose first character is
|
||||
not "N" or "n" AND "Brian Paul" is the vendor string AND
|
||||
"Mesa X11"* (or "Mesa" for backward compatibility) is the
|
||||
renderer string.
|
||||
|
||||
Anyone who modifies Mesa so that glXSwapBuffers does not
|
||||
simply blit the previously rendered back buffer should
|
||||
change either their vendor or renderer string to avoid
|
||||
confusing GLUT. */
|
||||
|
||||
void
|
||||
__glutDetermineMesaSwapHackSupport(void)
|
||||
{
|
||||
static int doneAlready = 0;
|
||||
char *env, *vendor, *renderer;
|
||||
|
||||
if (doneAlready)
|
||||
return;
|
||||
env = getenv("MESA_SWAP_HACK");
|
||||
if (env) {
|
||||
if ((env[0] != 'n') && (env[0] != 'N')) {
|
||||
vendor = (char *) glGetString(GL_VENDOR);
|
||||
renderer = (char *) glGetString(GL_RENDERER);
|
||||
|
||||
/* Old versions of X11 Mesa uses the renderer string
|
||||
"Mesa"; Brian plans to start using "Mesa X11" to
|
||||
distinguish the X version of Mesa from other flavor
|
||||
such as Windows or 3Dfx. */
|
||||
|
||||
#define MESA_X11 "Mesa X11"
|
||||
|
||||
/* XXX At some point in the future, eliminate the
|
||||
backward compatibility for the old "Mesa" renderer
|
||||
string. */
|
||||
|
||||
if (!strcmp(vendor, "Brian Paul") && (!strcmp(renderer, "Mesa") ||
|
||||
!strncmp(renderer, MESA_X11, sizeof(MESA_X11) - 1)))
|
||||
__glutMesaSwapHackSupport = 1;
|
||||
}
|
||||
}
|
||||
doneAlready = 1;
|
||||
}
|
||||
|
|
|
@ -1,31 +1,31 @@
|
|||
|
||||
/* Copyright (c) Mark J. Kilgard, 1994. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include "glutint.h"
|
||||
|
||||
/* CENTRY */
|
||||
int GLUTAPIENTRY
|
||||
glutGetModifiers(void)
|
||||
{
|
||||
int modifiers;
|
||||
|
||||
if(__glutModifierMask == (unsigned int) ~0) {
|
||||
__glutWarning(
|
||||
"glutCurrentModifiers: do not call outside core input callback.");
|
||||
return 0;
|
||||
}
|
||||
modifiers = 0;
|
||||
if(__glutModifierMask & (ShiftMask|LockMask))
|
||||
modifiers |= GLUT_ACTIVE_SHIFT;
|
||||
if(__glutModifierMask & ControlMask)
|
||||
modifiers |= GLUT_ACTIVE_CTRL;
|
||||
if(__glutModifierMask & Mod1Mask)
|
||||
modifiers |= GLUT_ACTIVE_ALT;
|
||||
return modifiers;
|
||||
}
|
||||
|
||||
/* ENDCENTRY */
|
||||
|
||||
/* Copyright (c) Mark J. Kilgard, 1994. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include "glutint.h"
|
||||
|
||||
/* CENTRY */
|
||||
int GLUTAPIENTRY
|
||||
glutGetModifiers(void)
|
||||
{
|
||||
int modifiers;
|
||||
|
||||
if(__glutModifierMask == (unsigned int) ~0) {
|
||||
__glutWarning(
|
||||
"glutCurrentModifiers: do not call outside core input callback.");
|
||||
return 0;
|
||||
}
|
||||
modifiers = 0;
|
||||
if(__glutModifierMask & (ShiftMask|LockMask))
|
||||
modifiers |= GLUT_ACTIVE_SHIFT;
|
||||
if(__glutModifierMask & ControlMask)
|
||||
modifiers |= GLUT_ACTIVE_CTRL;
|
||||
if(__glutModifierMask & Mod1Mask)
|
||||
modifiers |= GLUT_ACTIVE_ALT;
|
||||
return modifiers;
|
||||
}
|
||||
|
||||
/* ENDCENTRY */
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,42 +1,42 @@
|
|||
|
||||
/* Copyright (c) Mark J. Kilgard, 1994. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include "glutint.h"
|
||||
#include "glutstroke.h"
|
||||
|
||||
void GLUTAPIENTRY
|
||||
glutStrokeCharacter(GLUTstrokeFont font, int c)
|
||||
{
|
||||
const StrokeCharRec *ch;
|
||||
const StrokeRec *stroke;
|
||||
const CoordRec *coord;
|
||||
StrokeFontPtr fontinfo;
|
||||
int i, j;
|
||||
|
||||
|
||||
#if defined(_WIN32)
|
||||
fontinfo = (StrokeFontPtr) __glutFont(font);
|
||||
#else
|
||||
fontinfo = (StrokeFontPtr) font;
|
||||
#endif
|
||||
|
||||
if (c < 0 || c >= fontinfo->num_chars)
|
||||
return;
|
||||
ch = &(fontinfo->ch[c]);
|
||||
if (ch) {
|
||||
for (i = ch->num_strokes, stroke = ch->stroke;
|
||||
i > 0; i--, stroke++) {
|
||||
glBegin(GL_LINE_STRIP);
|
||||
for (j = stroke->num_coords, coord = stroke->coord;
|
||||
j > 0; j--, coord++) {
|
||||
glVertex2f(coord->x, coord->y);
|
||||
}
|
||||
glEnd();
|
||||
}
|
||||
glTranslatef(ch->right, 0.0, 0.0);
|
||||
}
|
||||
}
|
||||
|
||||
/* Copyright (c) Mark J. Kilgard, 1994. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include "glutint.h"
|
||||
#include "glutstroke.h"
|
||||
|
||||
void GLUTAPIENTRY
|
||||
glutStrokeCharacter(GLUTstrokeFont font, int c)
|
||||
{
|
||||
const StrokeCharRec *ch;
|
||||
const StrokeRec *stroke;
|
||||
const CoordRec *coord;
|
||||
StrokeFontPtr fontinfo;
|
||||
int i, j;
|
||||
|
||||
|
||||
#if defined(_WIN32)
|
||||
fontinfo = (StrokeFontPtr) __glutFont(font);
|
||||
#else
|
||||
fontinfo = (StrokeFontPtr) font;
|
||||
#endif
|
||||
|
||||
if (c < 0 || c >= fontinfo->num_chars)
|
||||
return;
|
||||
ch = &(fontinfo->ch[c]);
|
||||
if (ch) {
|
||||
for (i = ch->num_strokes, stroke = ch->stroke;
|
||||
i > 0; i--, stroke++) {
|
||||
glBegin(GL_LINE_STRIP);
|
||||
for (j = stroke->num_coords, coord = stroke->coord;
|
||||
j > 0; j--, coord++) {
|
||||
glVertex2f(coord->x, coord->y);
|
||||
}
|
||||
glEnd();
|
||||
}
|
||||
glTranslatef(ch->right, 0.0, 0.0);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,67 +1,67 @@
|
|||
|
||||
/* Copyright (c) Mark J. Kilgard, 1994, 1997. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include <stdio.h>
|
||||
#include "glutint.h"
|
||||
|
||||
GLint __glutFPS = 0;
|
||||
GLint __glutSwapCount = 0;
|
||||
GLint __glutSwapTime = 0;
|
||||
|
||||
/* CENTRY */
|
||||
void GLUTAPIENTRY
|
||||
glutSwapBuffers(void)
|
||||
{
|
||||
GLUTwindow *window = __glutCurrentWindow;
|
||||
|
||||
if (window->renderWin == window->win) {
|
||||
if (__glutCurrentWindow->treatAsSingle) {
|
||||
/* Pretend the double buffered window is single buffered,
|
||||
so treat glutSwapBuffers as a no-op. */
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
if (__glutCurrentWindow->overlay->treatAsSingle) {
|
||||
/* Pretend the double buffered overlay is single
|
||||
buffered, so treat glutSwapBuffers as a no-op. */
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* For the MESA_SWAP_HACK. */
|
||||
window->usedSwapBuffers = 1;
|
||||
|
||||
SWAP_BUFFERS_LAYER(__glutCurrentWindow);
|
||||
|
||||
/* I considered putting the window being swapped on the
|
||||
GLUT_FINISH_WORK work list because you could call
|
||||
glutSwapBuffers from an idle callback which doesn't call
|
||||
__glutSetWindow which normally adds indirect rendering
|
||||
windows to the GLUT_FINISH_WORK work list. Not being put
|
||||
on the list could lead to the buffering up of multiple
|
||||
redisplays and buffer swaps and hamper interactivity. I
|
||||
consider this an application bug due to not using
|
||||
glutPostRedisplay to trigger redraws. If
|
||||
glutPostRedisplay were used, __glutSetWindow would be
|
||||
called and a glFinish to throttle buffering would occur. */
|
||||
|
||||
if (__glutFPS) {
|
||||
GLint t = glutGet(GLUT_ELAPSED_TIME);
|
||||
__glutSwapCount++;
|
||||
if (__glutSwapTime == 0)
|
||||
__glutSwapTime = t;
|
||||
else if (t - __glutSwapTime > __glutFPS) {
|
||||
float time = 0.001 * (t - __glutSwapTime);
|
||||
float fps = (float) __glutSwapCount / time;
|
||||
fprintf(stderr, "GLUT: %d frames in %.2f seconds = %.2f FPS\n",
|
||||
__glutSwapCount, time, fps);
|
||||
__glutSwapTime = t;
|
||||
__glutSwapCount = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* ENDCENTRY */
|
||||
|
||||
/* Copyright (c) Mark J. Kilgard, 1994, 1997. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include <stdio.h>
|
||||
#include "glutint.h"
|
||||
|
||||
GLint __glutFPS = 0;
|
||||
GLint __glutSwapCount = 0;
|
||||
GLint __glutSwapTime = 0;
|
||||
|
||||
/* CENTRY */
|
||||
void GLUTAPIENTRY
|
||||
glutSwapBuffers(void)
|
||||
{
|
||||
GLUTwindow *window = __glutCurrentWindow;
|
||||
|
||||
if (window->renderWin == window->win) {
|
||||
if (__glutCurrentWindow->treatAsSingle) {
|
||||
/* Pretend the double buffered window is single buffered,
|
||||
so treat glutSwapBuffers as a no-op. */
|
||||
return;
|
||||
}
|
||||
} else {
|
||||
if (__glutCurrentWindow->overlay->treatAsSingle) {
|
||||
/* Pretend the double buffered overlay is single
|
||||
buffered, so treat glutSwapBuffers as a no-op. */
|
||||
return;
|
||||
}
|
||||
}
|
||||
|
||||
/* For the MESA_SWAP_HACK. */
|
||||
window->usedSwapBuffers = 1;
|
||||
|
||||
SWAP_BUFFERS_LAYER(__glutCurrentWindow);
|
||||
|
||||
/* I considered putting the window being swapped on the
|
||||
GLUT_FINISH_WORK work list because you could call
|
||||
glutSwapBuffers from an idle callback which doesn't call
|
||||
__glutSetWindow which normally adds indirect rendering
|
||||
windows to the GLUT_FINISH_WORK work list. Not being put
|
||||
on the list could lead to the buffering up of multiple
|
||||
redisplays and buffer swaps and hamper interactivity. I
|
||||
consider this an application bug due to not using
|
||||
glutPostRedisplay to trigger redraws. If
|
||||
glutPostRedisplay were used, __glutSetWindow would be
|
||||
called and a glFinish to throttle buffering would occur. */
|
||||
|
||||
if (__glutFPS) {
|
||||
GLint t = glutGet(GLUT_ELAPSED_TIME);
|
||||
__glutSwapCount++;
|
||||
if (__glutSwapTime == 0)
|
||||
__glutSwapTime = t;
|
||||
else if (t - __glutSwapTime > __glutFPS) {
|
||||
float time = 0.001 * (t - __glutSwapTime);
|
||||
float fps = (float) __glutSwapCount / time;
|
||||
fprintf(stderr, "GLUT: %d frames in %.2f seconds = %.2f FPS\n",
|
||||
__glutSwapCount, time, fps);
|
||||
__glutSwapTime = t;
|
||||
__glutSwapCount = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
/* ENDCENTRY */
|
||||
|
|
|
@ -1,210 +1,210 @@
|
|||
|
||||
/* Copyright (c) Mark J. Kilgard, 1994. */
|
||||
|
||||
/**
|
||||
(c) Copyright 1993, Silicon Graphics, Inc.
|
||||
|
||||
ALL RIGHTS RESERVED
|
||||
|
||||
Permission to use, copy, modify, and distribute this software
|
||||
for any purpose and without fee is hereby granted, provided
|
||||
that the above copyright notice appear in all copies and that
|
||||
both the copyright notice and this permission notice appear in
|
||||
supporting documentation, and that the name of Silicon
|
||||
Graphics, Inc. not be used in advertising or publicity
|
||||
pertaining to distribution of the software without specific,
|
||||
written prior permission.
|
||||
|
||||
THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU
|
||||
"AS-IS" AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR
|
||||
OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF
|
||||
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN NO
|
||||
EVENT SHALL SILICON GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE
|
||||
ELSE FOR ANY DIRECT, SPECIAL, INCIDENTAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER,
|
||||
INCLUDING WITHOUT LIMITATION, LOSS OF PROFIT, LOSS OF USE,
|
||||
SAVINGS OR REVENUE, OR THE CLAIMS OF THIRD PARTIES, WHETHER OR
|
||||
NOT SILICON GRAPHICS, INC. HAS BEEN ADVISED OF THE POSSIBILITY
|
||||
OF SUCH LOSS, HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
ARISING OUT OF OR IN CONNECTION WITH THE POSSESSION, USE OR
|
||||
PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
US Government Users Restricted Rights
|
||||
|
||||
Use, duplication, or disclosure by the Government is subject to
|
||||
restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
|
||||
(c)(1)(ii) of the Rights in Technical Data and Computer
|
||||
Software clause at DFARS 252.227-7013 and/or in similar or
|
||||
successor clauses in the FAR or the DOD or NASA FAR
|
||||
Supplement. Unpublished-- rights reserved under the copyright
|
||||
laws of the United States. Contractor/manufacturer is Silicon
|
||||
Graphics, Inc., 2011 N. Shoreline Blvd., Mountain View, CA
|
||||
94039-7311.
|
||||
|
||||
OpenGL(TM) is a trademark of Silicon Graphics, Inc.
|
||||
*/
|
||||
|
||||
#include "glutint.h"
|
||||
|
||||
/* Rim, body, lid, and bottom data must be reflected in x and
|
||||
y; handle and spout data across the y axis only. */
|
||||
|
||||
static int patchdata[][16] =
|
||||
{
|
||||
/* rim */
|
||||
{102, 103, 104, 105, 4, 5, 6, 7, 8, 9, 10, 11,
|
||||
12, 13, 14, 15},
|
||||
/* body */
|
||||
{12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
|
||||
24, 25, 26, 27},
|
||||
{24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 36,
|
||||
37, 38, 39, 40},
|
||||
/* lid */
|
||||
{96, 96, 96, 96, 97, 98, 99, 100, 101, 101, 101,
|
||||
101, 0, 1, 2, 3,},
|
||||
{0, 1, 2, 3, 106, 107, 108, 109, 110, 111, 112,
|
||||
113, 114, 115, 116, 117},
|
||||
/* bottom */
|
||||
{118, 118, 118, 118, 124, 122, 119, 121, 123, 126,
|
||||
125, 120, 40, 39, 38, 37},
|
||||
/* handle */
|
||||
{41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
|
||||
53, 54, 55, 56},
|
||||
{53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
|
||||
28, 65, 66, 67},
|
||||
/* spout */
|
||||
{68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
|
||||
80, 81, 82, 83},
|
||||
{80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
|
||||
92, 93, 94, 95}
|
||||
};
|
||||
/* *INDENT-OFF* */
|
||||
|
||||
static float cpdata[][3] =
|
||||
{
|
||||
{0.2, 0, 2.7}, {0.2, -0.112, 2.7}, {0.112, -0.2, 2.7}, {0,
|
||||
-0.2, 2.7}, {1.3375, 0, 2.53125}, {1.3375, -0.749, 2.53125},
|
||||
{0.749, -1.3375, 2.53125}, {0, -1.3375, 2.53125}, {1.4375,
|
||||
0, 2.53125}, {1.4375, -0.805, 2.53125}, {0.805, -1.4375,
|
||||
2.53125}, {0, -1.4375, 2.53125}, {1.5, 0, 2.4}, {1.5, -0.84,
|
||||
2.4}, {0.84, -1.5, 2.4}, {0, -1.5, 2.4}, {1.75, 0, 1.875},
|
||||
{1.75, -0.98, 1.875}, {0.98, -1.75, 1.875}, {0, -1.75,
|
||||
1.875}, {2, 0, 1.35}, {2, -1.12, 1.35}, {1.12, -2, 1.35},
|
||||
{0, -2, 1.35}, {2, 0, 0.9}, {2, -1.12, 0.9}, {1.12, -2,
|
||||
0.9}, {0, -2, 0.9}, {-2, 0, 0.9}, {2, 0, 0.45}, {2, -1.12,
|
||||
0.45}, {1.12, -2, 0.45}, {0, -2, 0.45}, {1.5, 0, 0.225},
|
||||
{1.5, -0.84, 0.225}, {0.84, -1.5, 0.225}, {0, -1.5, 0.225},
|
||||
{1.5, 0, 0.15}, {1.5, -0.84, 0.15}, {0.84, -1.5, 0.15}, {0,
|
||||
-1.5, 0.15}, {-1.6, 0, 2.025}, {-1.6, -0.3, 2.025}, {-1.5,
|
||||
-0.3, 2.25}, {-1.5, 0, 2.25}, {-2.3, 0, 2.025}, {-2.3, -0.3,
|
||||
2.025}, {-2.5, -0.3, 2.25}, {-2.5, 0, 2.25}, {-2.7, 0,
|
||||
2.025}, {-2.7, -0.3, 2.025}, {-3, -0.3, 2.25}, {-3, 0,
|
||||
2.25}, {-2.7, 0, 1.8}, {-2.7, -0.3, 1.8}, {-3, -0.3, 1.8},
|
||||
{-3, 0, 1.8}, {-2.7, 0, 1.575}, {-2.7, -0.3, 1.575}, {-3,
|
||||
-0.3, 1.35}, {-3, 0, 1.35}, {-2.5, 0, 1.125}, {-2.5, -0.3,
|
||||
1.125}, {-2.65, -0.3, 0.9375}, {-2.65, 0, 0.9375}, {-2,
|
||||
-0.3, 0.9}, {-1.9, -0.3, 0.6}, {-1.9, 0, 0.6}, {1.7, 0,
|
||||
1.425}, {1.7, -0.66, 1.425}, {1.7, -0.66, 0.6}, {1.7, 0,
|
||||
0.6}, {2.6, 0, 1.425}, {2.6, -0.66, 1.425}, {3.1, -0.66,
|
||||
0.825}, {3.1, 0, 0.825}, {2.3, 0, 2.1}, {2.3, -0.25, 2.1},
|
||||
{2.4, -0.25, 2.025}, {2.4, 0, 2.025}, {2.7, 0, 2.4}, {2.7,
|
||||
-0.25, 2.4}, {3.3, -0.25, 2.4}, {3.3, 0, 2.4}, {2.8, 0,
|
||||
2.475}, {2.8, -0.25, 2.475}, {3.525, -0.25, 2.49375},
|
||||
{3.525, 0, 2.49375}, {2.9, 0, 2.475}, {2.9, -0.15, 2.475},
|
||||
{3.45, -0.15, 2.5125}, {3.45, 0, 2.5125}, {2.8, 0, 2.4},
|
||||
{2.8, -0.15, 2.4}, {3.2, -0.15, 2.4}, {3.2, 0, 2.4}, {0, 0,
|
||||
3.15}, {0.8, 0, 3.15}, {0.8, -0.45, 3.15}, {0.45, -0.8,
|
||||
3.15}, {0, -0.8, 3.15}, {0, 0, 2.85}, {1.4, 0, 2.4}, {1.4,
|
||||
-0.784, 2.4}, {0.784, -1.4, 2.4}, {0, -1.4, 2.4}, {0.4, 0,
|
||||
2.55}, {0.4, -0.224, 2.55}, {0.224, -0.4, 2.55}, {0, -0.4,
|
||||
2.55}, {1.3, 0, 2.55}, {1.3, -0.728, 2.55}, {0.728, -1.3,
|
||||
2.55}, {0, -1.3, 2.55}, {1.3, 0, 2.4}, {1.3, -0.728, 2.4},
|
||||
{0.728, -1.3, 2.4}, {0, -1.3, 2.4}, {0, 0, 0}, {1.425,
|
||||
-0.798, 0}, {1.5, 0, 0.075}, {1.425, 0, 0}, {0.798, -1.425,
|
||||
0}, {0, -1.5, 0.075}, {0, -1.425, 0}, {1.5, -0.84, 0.075},
|
||||
{0.84, -1.5, 0.075}
|
||||
};
|
||||
|
||||
static float tex[2][2][2] =
|
||||
{
|
||||
{ {0, 0},
|
||||
{1, 0}},
|
||||
{ {0, 1},
|
||||
{1, 1}}
|
||||
};
|
||||
|
||||
/* *INDENT-ON* */
|
||||
|
||||
static void
|
||||
teapot(GLint grid, GLdouble scale, GLenum type)
|
||||
{
|
||||
float p[4][4][3], q[4][4][3], r[4][4][3], s[4][4][3];
|
||||
long i, j, k, l;
|
||||
|
||||
glPushAttrib(GL_ENABLE_BIT | GL_EVAL_BIT);
|
||||
glEnable(GL_AUTO_NORMAL);
|
||||
glEnable(GL_NORMALIZE);
|
||||
glEnable(GL_MAP2_VERTEX_3);
|
||||
glEnable(GL_MAP2_TEXTURE_COORD_2);
|
||||
glPushMatrix();
|
||||
glRotatef(270.0, 1.0, 0.0, 0.0);
|
||||
glScalef(0.5 * scale, 0.5 * scale, 0.5 * scale);
|
||||
glTranslatef(0.0, 0.0, -1.5);
|
||||
for (i = 0; i < 10; i++) {
|
||||
for (j = 0; j < 4; j++) {
|
||||
for (k = 0; k < 4; k++) {
|
||||
for (l = 0; l < 3; l++) {
|
||||
p[j][k][l] = cpdata[patchdata[i][j * 4 + k]][l];
|
||||
q[j][k][l] = cpdata[patchdata[i][j * 4 + (3 - k)]][l];
|
||||
if (l == 1)
|
||||
q[j][k][l] *= -1.0;
|
||||
if (i < 6) {
|
||||
r[j][k][l] =
|
||||
cpdata[patchdata[i][j * 4 + (3 - k)]][l];
|
||||
if (l == 0)
|
||||
r[j][k][l] *= -1.0;
|
||||
s[j][k][l] = cpdata[patchdata[i][j * 4 + k]][l];
|
||||
if (l == 0)
|
||||
s[j][k][l] *= -1.0;
|
||||
if (l == 1)
|
||||
s[j][k][l] *= -1.0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
glMap2f(GL_MAP2_TEXTURE_COORD_2, 0, 1, 2, 2, 0, 1, 4, 2,
|
||||
&tex[0][0][0]);
|
||||
glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4,
|
||||
&p[0][0][0]);
|
||||
glMapGrid2f(grid, 0.0, 1.0, grid, 0.0, 1.0);
|
||||
glEvalMesh2(type, 0, grid, 0, grid);
|
||||
glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4,
|
||||
&q[0][0][0]);
|
||||
glEvalMesh2(type, 0, grid, 0, grid);
|
||||
if (i < 6) {
|
||||
glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4,
|
||||
&r[0][0][0]);
|
||||
glEvalMesh2(type, 0, grid, 0, grid);
|
||||
glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4,
|
||||
&s[0][0][0]);
|
||||
glEvalMesh2(type, 0, grid, 0, grid);
|
||||
}
|
||||
}
|
||||
glPopMatrix();
|
||||
glPopAttrib();
|
||||
}
|
||||
|
||||
/* CENTRY */
|
||||
void GLUTAPIENTRY
|
||||
glutSolidTeapot(GLdouble scale)
|
||||
{
|
||||
teapot(7, scale, GL_FILL);
|
||||
}
|
||||
|
||||
void GLUTAPIENTRY
|
||||
glutWireTeapot(GLdouble scale)
|
||||
{
|
||||
teapot(10, scale, GL_LINE);
|
||||
}
|
||||
|
||||
/* ENDCENTRY */
|
||||
|
||||
/* Copyright (c) Mark J. Kilgard, 1994. */
|
||||
|
||||
/**
|
||||
(c) Copyright 1993, Silicon Graphics, Inc.
|
||||
|
||||
ALL RIGHTS RESERVED
|
||||
|
||||
Permission to use, copy, modify, and distribute this software
|
||||
for any purpose and without fee is hereby granted, provided
|
||||
that the above copyright notice appear in all copies and that
|
||||
both the copyright notice and this permission notice appear in
|
||||
supporting documentation, and that the name of Silicon
|
||||
Graphics, Inc. not be used in advertising or publicity
|
||||
pertaining to distribution of the software without specific,
|
||||
written prior permission.
|
||||
|
||||
THE MATERIAL EMBODIED ON THIS SOFTWARE IS PROVIDED TO YOU
|
||||
"AS-IS" AND WITHOUT WARRANTY OF ANY KIND, EXPRESS, IMPLIED OR
|
||||
OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY WARRANTY OF
|
||||
MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN NO
|
||||
EVENT SHALL SILICON GRAPHICS, INC. BE LIABLE TO YOU OR ANYONE
|
||||
ELSE FOR ANY DIRECT, SPECIAL, INCIDENTAL, INDIRECT OR
|
||||
CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER,
|
||||
INCLUDING WITHOUT LIMITATION, LOSS OF PROFIT, LOSS OF USE,
|
||||
SAVINGS OR REVENUE, OR THE CLAIMS OF THIRD PARTIES, WHETHER OR
|
||||
NOT SILICON GRAPHICS, INC. HAS BEEN ADVISED OF THE POSSIBILITY
|
||||
OF SUCH LOSS, HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY,
|
||||
ARISING OUT OF OR IN CONNECTION WITH THE POSSESSION, USE OR
|
||||
PERFORMANCE OF THIS SOFTWARE.
|
||||
|
||||
US Government Users Restricted Rights
|
||||
|
||||
Use, duplication, or disclosure by the Government is subject to
|
||||
restrictions set forth in FAR 52.227.19(c)(2) or subparagraph
|
||||
(c)(1)(ii) of the Rights in Technical Data and Computer
|
||||
Software clause at DFARS 252.227-7013 and/or in similar or
|
||||
successor clauses in the FAR or the DOD or NASA FAR
|
||||
Supplement. Unpublished-- rights reserved under the copyright
|
||||
laws of the United States. Contractor/manufacturer is Silicon
|
||||
Graphics, Inc., 2011 N. Shoreline Blvd., Mountain View, CA
|
||||
94039-7311.
|
||||
|
||||
OpenGL(TM) is a trademark of Silicon Graphics, Inc.
|
||||
*/
|
||||
|
||||
#include "glutint.h"
|
||||
|
||||
/* Rim, body, lid, and bottom data must be reflected in x and
|
||||
y; handle and spout data across the y axis only. */
|
||||
|
||||
static int patchdata[][16] =
|
||||
{
|
||||
/* rim */
|
||||
{102, 103, 104, 105, 4, 5, 6, 7, 8, 9, 10, 11,
|
||||
12, 13, 14, 15},
|
||||
/* body */
|
||||
{12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23,
|
||||
24, 25, 26, 27},
|
||||
{24, 25, 26, 27, 29, 30, 31, 32, 33, 34, 35, 36,
|
||||
37, 38, 39, 40},
|
||||
/* lid */
|
||||
{96, 96, 96, 96, 97, 98, 99, 100, 101, 101, 101,
|
||||
101, 0, 1, 2, 3,},
|
||||
{0, 1, 2, 3, 106, 107, 108, 109, 110, 111, 112,
|
||||
113, 114, 115, 116, 117},
|
||||
/* bottom */
|
||||
{118, 118, 118, 118, 124, 122, 119, 121, 123, 126,
|
||||
125, 120, 40, 39, 38, 37},
|
||||
/* handle */
|
||||
{41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52,
|
||||
53, 54, 55, 56},
|
||||
{53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64,
|
||||
28, 65, 66, 67},
|
||||
/* spout */
|
||||
{68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
|
||||
80, 81, 82, 83},
|
||||
{80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91,
|
||||
92, 93, 94, 95}
|
||||
};
|
||||
/* *INDENT-OFF* */
|
||||
|
||||
static float cpdata[][3] =
|
||||
{
|
||||
{0.2, 0, 2.7}, {0.2, -0.112, 2.7}, {0.112, -0.2, 2.7}, {0,
|
||||
-0.2, 2.7}, {1.3375, 0, 2.53125}, {1.3375, -0.749, 2.53125},
|
||||
{0.749, -1.3375, 2.53125}, {0, -1.3375, 2.53125}, {1.4375,
|
||||
0, 2.53125}, {1.4375, -0.805, 2.53125}, {0.805, -1.4375,
|
||||
2.53125}, {0, -1.4375, 2.53125}, {1.5, 0, 2.4}, {1.5, -0.84,
|
||||
2.4}, {0.84, -1.5, 2.4}, {0, -1.5, 2.4}, {1.75, 0, 1.875},
|
||||
{1.75, -0.98, 1.875}, {0.98, -1.75, 1.875}, {0, -1.75,
|
||||
1.875}, {2, 0, 1.35}, {2, -1.12, 1.35}, {1.12, -2, 1.35},
|
||||
{0, -2, 1.35}, {2, 0, 0.9}, {2, -1.12, 0.9}, {1.12, -2,
|
||||
0.9}, {0, -2, 0.9}, {-2, 0, 0.9}, {2, 0, 0.45}, {2, -1.12,
|
||||
0.45}, {1.12, -2, 0.45}, {0, -2, 0.45}, {1.5, 0, 0.225},
|
||||
{1.5, -0.84, 0.225}, {0.84, -1.5, 0.225}, {0, -1.5, 0.225},
|
||||
{1.5, 0, 0.15}, {1.5, -0.84, 0.15}, {0.84, -1.5, 0.15}, {0,
|
||||
-1.5, 0.15}, {-1.6, 0, 2.025}, {-1.6, -0.3, 2.025}, {-1.5,
|
||||
-0.3, 2.25}, {-1.5, 0, 2.25}, {-2.3, 0, 2.025}, {-2.3, -0.3,
|
||||
2.025}, {-2.5, -0.3, 2.25}, {-2.5, 0, 2.25}, {-2.7, 0,
|
||||
2.025}, {-2.7, -0.3, 2.025}, {-3, -0.3, 2.25}, {-3, 0,
|
||||
2.25}, {-2.7, 0, 1.8}, {-2.7, -0.3, 1.8}, {-3, -0.3, 1.8},
|
||||
{-3, 0, 1.8}, {-2.7, 0, 1.575}, {-2.7, -0.3, 1.575}, {-3,
|
||||
-0.3, 1.35}, {-3, 0, 1.35}, {-2.5, 0, 1.125}, {-2.5, -0.3,
|
||||
1.125}, {-2.65, -0.3, 0.9375}, {-2.65, 0, 0.9375}, {-2,
|
||||
-0.3, 0.9}, {-1.9, -0.3, 0.6}, {-1.9, 0, 0.6}, {1.7, 0,
|
||||
1.425}, {1.7, -0.66, 1.425}, {1.7, -0.66, 0.6}, {1.7, 0,
|
||||
0.6}, {2.6, 0, 1.425}, {2.6, -0.66, 1.425}, {3.1, -0.66,
|
||||
0.825}, {3.1, 0, 0.825}, {2.3, 0, 2.1}, {2.3, -0.25, 2.1},
|
||||
{2.4, -0.25, 2.025}, {2.4, 0, 2.025}, {2.7, 0, 2.4}, {2.7,
|
||||
-0.25, 2.4}, {3.3, -0.25, 2.4}, {3.3, 0, 2.4}, {2.8, 0,
|
||||
2.475}, {2.8, -0.25, 2.475}, {3.525, -0.25, 2.49375},
|
||||
{3.525, 0, 2.49375}, {2.9, 0, 2.475}, {2.9, -0.15, 2.475},
|
||||
{3.45, -0.15, 2.5125}, {3.45, 0, 2.5125}, {2.8, 0, 2.4},
|
||||
{2.8, -0.15, 2.4}, {3.2, -0.15, 2.4}, {3.2, 0, 2.4}, {0, 0,
|
||||
3.15}, {0.8, 0, 3.15}, {0.8, -0.45, 3.15}, {0.45, -0.8,
|
||||
3.15}, {0, -0.8, 3.15}, {0, 0, 2.85}, {1.4, 0, 2.4}, {1.4,
|
||||
-0.784, 2.4}, {0.784, -1.4, 2.4}, {0, -1.4, 2.4}, {0.4, 0,
|
||||
2.55}, {0.4, -0.224, 2.55}, {0.224, -0.4, 2.55}, {0, -0.4,
|
||||
2.55}, {1.3, 0, 2.55}, {1.3, -0.728, 2.55}, {0.728, -1.3,
|
||||
2.55}, {0, -1.3, 2.55}, {1.3, 0, 2.4}, {1.3, -0.728, 2.4},
|
||||
{0.728, -1.3, 2.4}, {0, -1.3, 2.4}, {0, 0, 0}, {1.425,
|
||||
-0.798, 0}, {1.5, 0, 0.075}, {1.425, 0, 0}, {0.798, -1.425,
|
||||
0}, {0, -1.5, 0.075}, {0, -1.425, 0}, {1.5, -0.84, 0.075},
|
||||
{0.84, -1.5, 0.075}
|
||||
};
|
||||
|
||||
static float tex[2][2][2] =
|
||||
{
|
||||
{ {0, 0},
|
||||
{1, 0}},
|
||||
{ {0, 1},
|
||||
{1, 1}}
|
||||
};
|
||||
|
||||
/* *INDENT-ON* */
|
||||
|
||||
static void
|
||||
teapot(GLint grid, GLdouble scale, GLenum type)
|
||||
{
|
||||
float p[4][4][3], q[4][4][3], r[4][4][3], s[4][4][3];
|
||||
long i, j, k, l;
|
||||
|
||||
glPushAttrib(GL_ENABLE_BIT | GL_EVAL_BIT);
|
||||
glEnable(GL_AUTO_NORMAL);
|
||||
glEnable(GL_NORMALIZE);
|
||||
glEnable(GL_MAP2_VERTEX_3);
|
||||
glEnable(GL_MAP2_TEXTURE_COORD_2);
|
||||
glPushMatrix();
|
||||
glRotatef(270.0, 1.0, 0.0, 0.0);
|
||||
glScalef(0.5 * scale, 0.5 * scale, 0.5 * scale);
|
||||
glTranslatef(0.0, 0.0, -1.5);
|
||||
for (i = 0; i < 10; i++) {
|
||||
for (j = 0; j < 4; j++) {
|
||||
for (k = 0; k < 4; k++) {
|
||||
for (l = 0; l < 3; l++) {
|
||||
p[j][k][l] = cpdata[patchdata[i][j * 4 + k]][l];
|
||||
q[j][k][l] = cpdata[patchdata[i][j * 4 + (3 - k)]][l];
|
||||
if (l == 1)
|
||||
q[j][k][l] *= -1.0;
|
||||
if (i < 6) {
|
||||
r[j][k][l] =
|
||||
cpdata[patchdata[i][j * 4 + (3 - k)]][l];
|
||||
if (l == 0)
|
||||
r[j][k][l] *= -1.0;
|
||||
s[j][k][l] = cpdata[patchdata[i][j * 4 + k]][l];
|
||||
if (l == 0)
|
||||
s[j][k][l] *= -1.0;
|
||||
if (l == 1)
|
||||
s[j][k][l] *= -1.0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
glMap2f(GL_MAP2_TEXTURE_COORD_2, 0, 1, 2, 2, 0, 1, 4, 2,
|
||||
&tex[0][0][0]);
|
||||
glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4,
|
||||
&p[0][0][0]);
|
||||
glMapGrid2f(grid, 0.0, 1.0, grid, 0.0, 1.0);
|
||||
glEvalMesh2(type, 0, grid, 0, grid);
|
||||
glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4,
|
||||
&q[0][0][0]);
|
||||
glEvalMesh2(type, 0, grid, 0, grid);
|
||||
if (i < 6) {
|
||||
glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4,
|
||||
&r[0][0][0]);
|
||||
glEvalMesh2(type, 0, grid, 0, grid);
|
||||
glMap2f(GL_MAP2_VERTEX_3, 0, 1, 3, 4, 0, 1, 12, 4,
|
||||
&s[0][0][0]);
|
||||
glEvalMesh2(type, 0, grid, 0, grid);
|
||||
}
|
||||
}
|
||||
glPopMatrix();
|
||||
glPopAttrib();
|
||||
}
|
||||
|
||||
/* CENTRY */
|
||||
void GLUTAPIENTRY
|
||||
glutSolidTeapot(GLdouble scale)
|
||||
{
|
||||
teapot(7, scale, GL_FILL);
|
||||
}
|
||||
|
||||
void GLUTAPIENTRY
|
||||
glutWireTeapot(GLdouble scale)
|
||||
{
|
||||
teapot(10, scale, GL_LINE);
|
||||
}
|
||||
|
||||
/* ENDCENTRY */
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,90 +1,90 @@
|
|||
|
||||
/* Copyright (c) Mark J. Kilgard, 1994. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "glutint.h"
|
||||
|
||||
#if !defined(__OS2__)
|
||||
|
||||
/* strdup is actually not a standard ANSI C or POSIX routine
|
||||
so implement a private one for GLUT. OpenVMS does not have a
|
||||
strdup; Linux's standard libc doesn't declare strdup by default
|
||||
(unless BSD or SVID interfaces are requested). */
|
||||
char *
|
||||
__glutStrdup(const char *string)
|
||||
{
|
||||
char *copy;
|
||||
|
||||
copy = (char*) malloc(strlen(string) + 1);
|
||||
if (copy == NULL)
|
||||
return NULL;
|
||||
strcpy(copy, string);
|
||||
return copy;
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
__glutWarning(char *format,...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
va_start(args, format);
|
||||
fprintf(stderr, "GLUT: Warning in %s: ",
|
||||
__glutProgramName ? __glutProgramName : "(unamed)");
|
||||
vfprintf(stderr, format, args);
|
||||
va_end(args);
|
||||
putc('\n', stderr);
|
||||
}
|
||||
|
||||
/* CENTRY */
|
||||
void GLUTAPIENTRY
|
||||
glutReportErrors(void)
|
||||
{
|
||||
GLenum error;
|
||||
|
||||
while ((error = glGetError()) != GL_NO_ERROR)
|
||||
__glutWarning("GL error: %s", gluErrorString(error));
|
||||
}
|
||||
/* ENDCENTRY */
|
||||
|
||||
void
|
||||
__glutFatalError(char *format,...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
va_start(args, format);
|
||||
fprintf(stderr, "GLUT: Fatal Error in %s: ",
|
||||
__glutProgramName ? __glutProgramName : "(unamed)");
|
||||
vfprintf(stderr, format, args);
|
||||
va_end(args);
|
||||
putc('\n', stderr);
|
||||
/* || defined(__OS2__) */
|
||||
#if defined(_WIN32)
|
||||
if (__glutExitFunc) {
|
||||
__glutExitFunc(1);
|
||||
}
|
||||
#endif
|
||||
exit(1);
|
||||
}
|
||||
|
||||
void
|
||||
__glutFatalUsage(char *format,...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
va_start(args, format);
|
||||
fprintf(stderr, "GLUT: Fatal API Usage in %s: ",
|
||||
__glutProgramName ? __glutProgramName : "(unamed)");
|
||||
vfprintf(stderr, format, args);
|
||||
va_end(args);
|
||||
putc('\n', stderr);
|
||||
abort();
|
||||
}
|
||||
|
||||
/* Copyright (c) Mark J. Kilgard, 1994. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
#include <string.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "glutint.h"
|
||||
|
||||
#if !defined(__OS2__)
|
||||
|
||||
/* strdup is actually not a standard ANSI C or POSIX routine
|
||||
so implement a private one for GLUT. OpenVMS does not have a
|
||||
strdup; Linux's standard libc doesn't declare strdup by default
|
||||
(unless BSD or SVID interfaces are requested). */
|
||||
char *
|
||||
__glutStrdup(const char *string)
|
||||
{
|
||||
char *copy;
|
||||
|
||||
copy = (char*) malloc(strlen(string) + 1);
|
||||
if (copy == NULL)
|
||||
return NULL;
|
||||
strcpy(copy, string);
|
||||
return copy;
|
||||
}
|
||||
#endif
|
||||
|
||||
void
|
||||
__glutWarning(char *format,...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
va_start(args, format);
|
||||
fprintf(stderr, "GLUT: Warning in %s: ",
|
||||
__glutProgramName ? __glutProgramName : "(unamed)");
|
||||
vfprintf(stderr, format, args);
|
||||
va_end(args);
|
||||
putc('\n', stderr);
|
||||
}
|
||||
|
||||
/* CENTRY */
|
||||
void GLUTAPIENTRY
|
||||
glutReportErrors(void)
|
||||
{
|
||||
GLenum error;
|
||||
|
||||
while ((error = glGetError()) != GL_NO_ERROR)
|
||||
__glutWarning("GL error: %s", gluErrorString(error));
|
||||
}
|
||||
/* ENDCENTRY */
|
||||
|
||||
void
|
||||
__glutFatalError(char *format,...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
va_start(args, format);
|
||||
fprintf(stderr, "GLUT: Fatal Error in %s: ",
|
||||
__glutProgramName ? __glutProgramName : "(unamed)");
|
||||
vfprintf(stderr, format, args);
|
||||
va_end(args);
|
||||
putc('\n', stderr);
|
||||
/* || defined(__OS2__) */
|
||||
#if defined(_WIN32)
|
||||
if (__glutExitFunc) {
|
||||
__glutExitFunc(1);
|
||||
}
|
||||
#endif
|
||||
exit(1);
|
||||
}
|
||||
|
||||
void
|
||||
__glutFatalUsage(char *format,...)
|
||||
{
|
||||
va_list args;
|
||||
|
||||
va_start(args, format);
|
||||
fprintf(stderr, "GLUT: Fatal API Usage in %s: ",
|
||||
__glutProgramName ? __glutProgramName : "(unamed)");
|
||||
vfprintf(stderr, format, args);
|
||||
va_end(args);
|
||||
putc('\n', stderr);
|
||||
abort();
|
||||
}
|
||||
|
|
|
@ -1,232 +1,232 @@
|
|||
|
||||
/* Copyright (c) Mark J. Kilgard, 1996. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifdef __sgi
|
||||
#include <dlfcn.h>
|
||||
#endif
|
||||
|
||||
#include "glutint.h"
|
||||
|
||||
/* Grumble. The IRIX 6.3 and early IRIX 6.4 OpenGL headers
|
||||
support the video resize extension, but failed to define
|
||||
GLX_SGIX_video_resize. */
|
||||
#if 0
|
||||
#ifdef GLX_SYNC_FRAME_SGIX
|
||||
#define GLX_SGIX_video_resize 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_video_resize)
|
||||
static int canVideoResize = -1;
|
||||
static int videoResizeChannel;
|
||||
#else
|
||||
static int canVideoResize = 0;
|
||||
#endif
|
||||
static int videoResizeInUse = 0;
|
||||
static int dx = -1, dy = -1, dw = -1, dh = -1;
|
||||
|
||||
/* XXX Note that IRIX 6.2, 6.3, and some 6.4 versions have a
|
||||
bug where programs seg-fault when they attempt video
|
||||
resizing from an indirect OpenGL context (either local or
|
||||
over a network). */
|
||||
|
||||
#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_video_resize)
|
||||
|
||||
static volatile int errorCaught;
|
||||
|
||||
/* ARGSUSED */
|
||||
static int
|
||||
catchXSGIvcErrors(Display * dpy, XErrorEvent * event)
|
||||
{
|
||||
errorCaught = 1;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* CENTRY */
|
||||
|
||||
int GLUTAPIENTRY
|
||||
glutVideoResizeGet(GLenum param)
|
||||
{
|
||||
#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_video_resize)
|
||||
if (canVideoResize < 0) {
|
||||
canVideoResize = __glutIsSupportedByGLX("GLX_SGIX_video_resize");
|
||||
if (canVideoResize) {
|
||||
#if defined(__sgi) && __sgi
|
||||
/* This is a hack because IRIX 6.2, 6.3, and some 6.4
|
||||
versions were released with GLX_SGIX_video_resize
|
||||
being advertised by the X server though the video
|
||||
resize extension is not actually supported. We try to
|
||||
determine if the libGL.so we are using actually has a
|
||||
video resize entrypoint before we try to use the
|
||||
feature. */
|
||||
void (*func) (void);
|
||||
void *glxDso = dlopen("libGL.so", RTLD_LAZY);
|
||||
|
||||
func = (void (*)(void)) dlsym(glxDso, "glXQueryChannelDeltasSGIX");
|
||||
if (!func) {
|
||||
canVideoResize = 0;
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
char *channelString;
|
||||
int (*handler) (Display *, XErrorEvent *);
|
||||
|
||||
channelString = getenv("GLUT_VIDEO_RESIZE_CHANNEL");
|
||||
videoResizeChannel = channelString ? atoi(channelString) : 0;
|
||||
|
||||
/* Work around another annoying problem with SGI's
|
||||
GLX_SGIX_video_resize implementation. Early IRIX
|
||||
6.4 OpenGL's advertise the extension and have the
|
||||
video resize API, but an XSGIvc X protocol errors
|
||||
result trying to use the API. Set up an error
|
||||
handler to intercept what would otherwise be a fatal
|
||||
error. If an error was recieved, do not report that
|
||||
video resize is possible. */
|
||||
handler = XSetErrorHandler(catchXSGIvcErrors);
|
||||
|
||||
errorCaught = 0;
|
||||
|
||||
#if defined(GLX_GLXEXT_PROTOTYPES)
|
||||
#endif
|
||||
|
||||
__glut_glXQueryChannelDeltasSGIX(__glutDisplay, __glutScreen,
|
||||
videoResizeChannel, &dx, &dy, &dw, &dh);
|
||||
|
||||
/* glXQueryChannelDeltasSGIX is an inherent X server
|
||||
round-trip so we know we will have gotten either the
|
||||
correct reply or and error by this time. */
|
||||
XSetErrorHandler(handler);
|
||||
|
||||
/* Still yet another work around. In IRIX 6.4 betas,
|
||||
glXQueryChannelDeltasSGIX will return as if it
|
||||
succeeded, but the values are filled with junk.
|
||||
Watch to make sure the delta variables really make
|
||||
sense. */
|
||||
if (errorCaught ||
|
||||
dx < 0 || dy < 0 || dw < 0 || dh < 0 ||
|
||||
dx > 2048 || dy > 2048 || dw > 2048 || dh > 2048) {
|
||||
canVideoResize = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif /* GLX_SGIX_video_resize */
|
||||
|
||||
switch (param) {
|
||||
case GLUT_VIDEO_RESIZE_POSSIBLE:
|
||||
return canVideoResize;
|
||||
case GLUT_VIDEO_RESIZE_IN_USE:
|
||||
return videoResizeInUse;
|
||||
case GLUT_VIDEO_RESIZE_X_DELTA:
|
||||
return dx;
|
||||
case GLUT_VIDEO_RESIZE_Y_DELTA:
|
||||
return dy;
|
||||
case GLUT_VIDEO_RESIZE_WIDTH_DELTA:
|
||||
return dw;
|
||||
case GLUT_VIDEO_RESIZE_HEIGHT_DELTA:
|
||||
return dh;
|
||||
case GLUT_VIDEO_RESIZE_X:
|
||||
case GLUT_VIDEO_RESIZE_Y:
|
||||
case GLUT_VIDEO_RESIZE_WIDTH:
|
||||
case GLUT_VIDEO_RESIZE_HEIGHT:
|
||||
#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_video_resize)
|
||||
if (videoResizeInUse) {
|
||||
int x, y, width, height;
|
||||
|
||||
__glut_glXQueryChannelRectSGIX(__glutDisplay, __glutScreen,
|
||||
videoResizeChannel, &x, &y, &width, &height);
|
||||
switch (param) {
|
||||
case GLUT_VIDEO_RESIZE_X:
|
||||
return x;
|
||||
case GLUT_VIDEO_RESIZE_Y:
|
||||
return y;
|
||||
case GLUT_VIDEO_RESIZE_WIDTH:
|
||||
return width;
|
||||
case GLUT_VIDEO_RESIZE_HEIGHT:
|
||||
return height;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return -1;
|
||||
default:
|
||||
__glutWarning("invalid glutVideoResizeGet parameter: %d", param);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
void GLUTAPIENTRY
|
||||
glutSetupVideoResizing(void)
|
||||
{
|
||||
#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_video_resize)
|
||||
if (glutVideoResizeGet(GLUT_VIDEO_RESIZE_POSSIBLE)) {
|
||||
__glut_glXBindChannelToWindowSGIX(__glutDisplay, __glutScreen,
|
||||
videoResizeChannel, __glutCurrentWindow->win);
|
||||
videoResizeInUse = 1;
|
||||
} else
|
||||
#endif
|
||||
__glutFatalError("glutEstablishVideoResizing: video resizing not possible.\n");
|
||||
}
|
||||
|
||||
void GLUTAPIENTRY
|
||||
glutStopVideoResizing(void)
|
||||
{
|
||||
#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_video_resize)
|
||||
if (glutVideoResizeGet(GLUT_VIDEO_RESIZE_POSSIBLE)) {
|
||||
if (videoResizeInUse) {
|
||||
__glut_glXBindChannelToWindowSGIX(__glutDisplay, __glutScreen,
|
||||
videoResizeChannel, None);
|
||||
videoResizeInUse = 0;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/* ARGSUSED */
|
||||
void GLUTAPIENTRY
|
||||
glutVideoResize(int x, int y, int width, int height)
|
||||
{
|
||||
#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_video_resize)
|
||||
if (videoResizeInUse) {
|
||||
#ifdef GLX_SYNC_SWAP_SGIX
|
||||
/* glXChannelRectSyncSGIX introduced in a patch to IRIX
|
||||
6.2; the original unpatched IRIX 6.2 behavior is always
|
||||
GLX_SYNC_SWAP_SGIX. */
|
||||
__glut_glXChannelRectSyncSGIX(__glutDisplay, __glutScreen,
|
||||
videoResizeChannel, GLX_SYNC_SWAP_SGIX);
|
||||
#endif
|
||||
__glut_glXChannelRectSGIX(__glutDisplay, __glutScreen,
|
||||
videoResizeChannel, x, y, width, height);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/* ARGSUSED */
|
||||
void GLUTAPIENTRY
|
||||
glutVideoPan(int x, int y, int width, int height)
|
||||
{
|
||||
#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_video_resize)
|
||||
if (videoResizeInUse) {
|
||||
#ifdef GLX_SYNC_FRAME_SGIX
|
||||
/* glXChannelRectSyncSGIX introduced in a patch to IRIX
|
||||
6.2; the original unpatched IRIX 6.2 behavior is always
|
||||
GLX_SYNC_SWAP_SGIX. We just ignore that we cannot
|
||||
accomplish GLX_SYNC_FRAME_SGIX on IRIX unpatched 6.2;
|
||||
this means you'd need a glutSwapBuffers to actually
|
||||
realize the video resize. */
|
||||
__glut_glXChannelRectSyncSGIX(__glutDisplay, __glutScreen,
|
||||
videoResizeChannel, GLX_SYNC_FRAME_SGIX);
|
||||
#endif
|
||||
__glut_glXChannelRectSGIX(__glutDisplay, __glutScreen,
|
||||
videoResizeChannel, x, y, width, height);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/* ENDCENTRY */
|
||||
|
||||
/* Copyright (c) Mark J. Kilgard, 1996. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include <stdlib.h>
|
||||
|
||||
#ifdef __sgi
|
||||
#include <dlfcn.h>
|
||||
#endif
|
||||
|
||||
#include "glutint.h"
|
||||
|
||||
/* Grumble. The IRIX 6.3 and early IRIX 6.4 OpenGL headers
|
||||
support the video resize extension, but failed to define
|
||||
GLX_SGIX_video_resize. */
|
||||
#if 0
|
||||
#ifdef GLX_SYNC_FRAME_SGIX
|
||||
#define GLX_SGIX_video_resize 1
|
||||
#endif
|
||||
#endif
|
||||
|
||||
#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_video_resize)
|
||||
static int canVideoResize = -1;
|
||||
static int videoResizeChannel;
|
||||
#else
|
||||
static int canVideoResize = 0;
|
||||
#endif
|
||||
static int videoResizeInUse = 0;
|
||||
static int dx = -1, dy = -1, dw = -1, dh = -1;
|
||||
|
||||
/* XXX Note that IRIX 6.2, 6.3, and some 6.4 versions have a
|
||||
bug where programs seg-fault when they attempt video
|
||||
resizing from an indirect OpenGL context (either local or
|
||||
over a network). */
|
||||
|
||||
#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_video_resize)
|
||||
|
||||
static volatile int errorCaught;
|
||||
|
||||
/* ARGSUSED */
|
||||
static int
|
||||
catchXSGIvcErrors(Display * dpy, XErrorEvent * event)
|
||||
{
|
||||
errorCaught = 1;
|
||||
return 0;
|
||||
}
|
||||
#endif
|
||||
|
||||
/* CENTRY */
|
||||
|
||||
int GLUTAPIENTRY
|
||||
glutVideoResizeGet(GLenum param)
|
||||
{
|
||||
#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_video_resize)
|
||||
if (canVideoResize < 0) {
|
||||
canVideoResize = __glutIsSupportedByGLX("GLX_SGIX_video_resize");
|
||||
if (canVideoResize) {
|
||||
#if defined(__sgi) && __sgi
|
||||
/* This is a hack because IRIX 6.2, 6.3, and some 6.4
|
||||
versions were released with GLX_SGIX_video_resize
|
||||
being advertised by the X server though the video
|
||||
resize extension is not actually supported. We try to
|
||||
determine if the libGL.so we are using actually has a
|
||||
video resize entrypoint before we try to use the
|
||||
feature. */
|
||||
void (*func) (void);
|
||||
void *glxDso = dlopen("libGL.so", RTLD_LAZY);
|
||||
|
||||
func = (void (*)(void)) dlsym(glxDso, "glXQueryChannelDeltasSGIX");
|
||||
if (!func) {
|
||||
canVideoResize = 0;
|
||||
} else
|
||||
#endif
|
||||
{
|
||||
char *channelString;
|
||||
int (*handler) (Display *, XErrorEvent *);
|
||||
|
||||
channelString = getenv("GLUT_VIDEO_RESIZE_CHANNEL");
|
||||
videoResizeChannel = channelString ? atoi(channelString) : 0;
|
||||
|
||||
/* Work around another annoying problem with SGI's
|
||||
GLX_SGIX_video_resize implementation. Early IRIX
|
||||
6.4 OpenGL's advertise the extension and have the
|
||||
video resize API, but an XSGIvc X protocol errors
|
||||
result trying to use the API. Set up an error
|
||||
handler to intercept what would otherwise be a fatal
|
||||
error. If an error was recieved, do not report that
|
||||
video resize is possible. */
|
||||
handler = XSetErrorHandler(catchXSGIvcErrors);
|
||||
|
||||
errorCaught = 0;
|
||||
|
||||
#if defined(GLX_GLXEXT_PROTOTYPES)
|
||||
#endif
|
||||
|
||||
__glut_glXQueryChannelDeltasSGIX(__glutDisplay, __glutScreen,
|
||||
videoResizeChannel, &dx, &dy, &dw, &dh);
|
||||
|
||||
/* glXQueryChannelDeltasSGIX is an inherent X server
|
||||
round-trip so we know we will have gotten either the
|
||||
correct reply or and error by this time. */
|
||||
XSetErrorHandler(handler);
|
||||
|
||||
/* Still yet another work around. In IRIX 6.4 betas,
|
||||
glXQueryChannelDeltasSGIX will return as if it
|
||||
succeeded, but the values are filled with junk.
|
||||
Watch to make sure the delta variables really make
|
||||
sense. */
|
||||
if (errorCaught ||
|
||||
dx < 0 || dy < 0 || dw < 0 || dh < 0 ||
|
||||
dx > 2048 || dy > 2048 || dw > 2048 || dh > 2048) {
|
||||
canVideoResize = 0;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
#endif /* GLX_SGIX_video_resize */
|
||||
|
||||
switch (param) {
|
||||
case GLUT_VIDEO_RESIZE_POSSIBLE:
|
||||
return canVideoResize;
|
||||
case GLUT_VIDEO_RESIZE_IN_USE:
|
||||
return videoResizeInUse;
|
||||
case GLUT_VIDEO_RESIZE_X_DELTA:
|
||||
return dx;
|
||||
case GLUT_VIDEO_RESIZE_Y_DELTA:
|
||||
return dy;
|
||||
case GLUT_VIDEO_RESIZE_WIDTH_DELTA:
|
||||
return dw;
|
||||
case GLUT_VIDEO_RESIZE_HEIGHT_DELTA:
|
||||
return dh;
|
||||
case GLUT_VIDEO_RESIZE_X:
|
||||
case GLUT_VIDEO_RESIZE_Y:
|
||||
case GLUT_VIDEO_RESIZE_WIDTH:
|
||||
case GLUT_VIDEO_RESIZE_HEIGHT:
|
||||
#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_video_resize)
|
||||
if (videoResizeInUse) {
|
||||
int x, y, width, height;
|
||||
|
||||
__glut_glXQueryChannelRectSGIX(__glutDisplay, __glutScreen,
|
||||
videoResizeChannel, &x, &y, &width, &height);
|
||||
switch (param) {
|
||||
case GLUT_VIDEO_RESIZE_X:
|
||||
return x;
|
||||
case GLUT_VIDEO_RESIZE_Y:
|
||||
return y;
|
||||
case GLUT_VIDEO_RESIZE_WIDTH:
|
||||
return width;
|
||||
case GLUT_VIDEO_RESIZE_HEIGHT:
|
||||
return height;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
return -1;
|
||||
default:
|
||||
__glutWarning("invalid glutVideoResizeGet parameter: %d", param);
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
void GLUTAPIENTRY
|
||||
glutSetupVideoResizing(void)
|
||||
{
|
||||
#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_video_resize)
|
||||
if (glutVideoResizeGet(GLUT_VIDEO_RESIZE_POSSIBLE)) {
|
||||
__glut_glXBindChannelToWindowSGIX(__glutDisplay, __glutScreen,
|
||||
videoResizeChannel, __glutCurrentWindow->win);
|
||||
videoResizeInUse = 1;
|
||||
} else
|
||||
#endif
|
||||
__glutFatalError("glutEstablishVideoResizing: video resizing not possible.\n");
|
||||
}
|
||||
|
||||
void GLUTAPIENTRY
|
||||
glutStopVideoResizing(void)
|
||||
{
|
||||
#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_video_resize)
|
||||
if (glutVideoResizeGet(GLUT_VIDEO_RESIZE_POSSIBLE)) {
|
||||
if (videoResizeInUse) {
|
||||
__glut_glXBindChannelToWindowSGIX(__glutDisplay, __glutScreen,
|
||||
videoResizeChannel, None);
|
||||
videoResizeInUse = 0;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/* ARGSUSED */
|
||||
void GLUTAPIENTRY
|
||||
glutVideoResize(int x, int y, int width, int height)
|
||||
{
|
||||
#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_video_resize)
|
||||
if (videoResizeInUse) {
|
||||
#ifdef GLX_SYNC_SWAP_SGIX
|
||||
/* glXChannelRectSyncSGIX introduced in a patch to IRIX
|
||||
6.2; the original unpatched IRIX 6.2 behavior is always
|
||||
GLX_SYNC_SWAP_SGIX. */
|
||||
__glut_glXChannelRectSyncSGIX(__glutDisplay, __glutScreen,
|
||||
videoResizeChannel, GLX_SYNC_SWAP_SGIX);
|
||||
#endif
|
||||
__glut_glXChannelRectSGIX(__glutDisplay, __glutScreen,
|
||||
videoResizeChannel, x, y, width, height);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/* ARGSUSED */
|
||||
void GLUTAPIENTRY
|
||||
glutVideoPan(int x, int y, int width, int height)
|
||||
{
|
||||
#if defined(GLX_VERSION_1_1) && defined(GLX_SGIX_video_resize)
|
||||
if (videoResizeInUse) {
|
||||
#ifdef GLX_SYNC_FRAME_SGIX
|
||||
/* glXChannelRectSyncSGIX introduced in a patch to IRIX
|
||||
6.2; the original unpatched IRIX 6.2 behavior is always
|
||||
GLX_SYNC_SWAP_SGIX. We just ignore that we cannot
|
||||
accomplish GLX_SYNC_FRAME_SGIX on IRIX unpatched 6.2;
|
||||
this means you'd need a glutSwapBuffers to actually
|
||||
realize the video resize. */
|
||||
__glut_glXChannelRectSyncSGIX(__glutDisplay, __glutScreen,
|
||||
videoResizeChannel, GLX_SYNC_FRAME_SGIX);
|
||||
#endif
|
||||
__glut_glXChannelRectSGIX(__glutDisplay, __glutScreen,
|
||||
videoResizeChannel, x, y, width, height);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
/* ENDCENTRY */
|
||||
|
|
|
@ -1,29 +1,29 @@
|
|||
|
||||
/* Copyright (c) Mark J. Kilgard, 1996, 1997. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "glutint.h"
|
||||
|
||||
/* CENTRY */
|
||||
void GLUTAPIENTRY
|
||||
glutWarpPointer(int x, int y)
|
||||
{
|
||||
// XWarpPointer(__glutDisplay, None, __glutCurrentWindow->win,
|
||||
// 0, 0, 0, 0, x, y);
|
||||
POINTL point;
|
||||
point.x = x;
|
||||
point.y = y;
|
||||
WinMapWindowPoints(__glutCurrentWindow->win,HWND_DESKTOP,&point,1);
|
||||
WinSetPointerPos(HWND_DESKTOP, point.x, point.y);
|
||||
|
||||
XFlush(__glutDisplay);
|
||||
}
|
||||
|
||||
/* ENDCENTRY */
|
||||
|
||||
/* Copyright (c) Mark J. Kilgard, 1996, 1997. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#include <stdlib.h>
|
||||
#include <stdarg.h>
|
||||
#include <stdio.h>
|
||||
|
||||
#include "glutint.h"
|
||||
|
||||
/* CENTRY */
|
||||
void GLUTAPIENTRY
|
||||
glutWarpPointer(int x, int y)
|
||||
{
|
||||
// XWarpPointer(__glutDisplay, None, __glutCurrentWindow->win,
|
||||
// 0, 0, 0, 0, x, y);
|
||||
POINTL point;
|
||||
point.x = x;
|
||||
point.y = y;
|
||||
WinMapWindowPoints(__glutCurrentWindow->win,HWND_DESKTOP,&point,1);
|
||||
WinSetPointerPos(HWND_DESKTOP, point.x, point.y);
|
||||
|
||||
XFlush(__glutDisplay);
|
||||
}
|
||||
|
||||
/* ENDCENTRY */
|
||||
|
|
|
@ -1,32 +1,32 @@
|
|||
#ifndef __glutbitmap_h__
|
||||
#define __glutbitmap_h__
|
||||
|
||||
/* Copyright (c) Mark J. Kilgard, 1994, 1998. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#define GLUT_NO_LIB_PRAGMA /* Avoid auto library linking when building
|
||||
the GLUT library itself. */
|
||||
#include <GL/glut.h>
|
||||
|
||||
typedef struct {
|
||||
const GLsizei width;
|
||||
const GLsizei height;
|
||||
const GLfloat xorig;
|
||||
const GLfloat yorig;
|
||||
const GLfloat advance;
|
||||
const GLubyte *bitmap;
|
||||
} BitmapCharRec, *BitmapCharPtr;
|
||||
|
||||
typedef struct {
|
||||
const char *name;
|
||||
const int num_chars;
|
||||
const int first;
|
||||
const BitmapCharRec * const *ch;
|
||||
} BitmapFontRec, *BitmapFontPtr;
|
||||
|
||||
typedef void *GLUTbitmapFont;
|
||||
|
||||
#endif /* __glutbitmap_h__ */
|
||||
#ifndef __glutbitmap_h__
|
||||
#define __glutbitmap_h__
|
||||
|
||||
/* Copyright (c) Mark J. Kilgard, 1994, 1998. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#define GLUT_NO_LIB_PRAGMA /* Avoid auto library linking when building
|
||||
the GLUT library itself. */
|
||||
#include <GL/glut.h>
|
||||
|
||||
typedef struct {
|
||||
const GLsizei width;
|
||||
const GLsizei height;
|
||||
const GLfloat xorig;
|
||||
const GLfloat yorig;
|
||||
const GLfloat advance;
|
||||
const GLubyte *bitmap;
|
||||
} BitmapCharRec, *BitmapCharPtr;
|
||||
|
||||
typedef struct {
|
||||
const char *name;
|
||||
const int num_chars;
|
||||
const int first;
|
||||
const BitmapCharRec * const *ch;
|
||||
} BitmapFontRec, *BitmapFontPtr;
|
||||
|
||||
typedef void *GLUTbitmapFont;
|
||||
|
||||
#endif /* __glutbitmap_h__ */
|
||||
|
|
|
@ -1,42 +1,42 @@
|
|||
#ifndef __glutstroke_h__
|
||||
#define __glutstroke_h__
|
||||
|
||||
/* Copyright (c) Mark J. Kilgard, 1994. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#if defined(_WIN32)
|
||||
#pragma warning (disable:4244) /* disable bogus conversion warnings */
|
||||
#pragma warning (disable:4305) /* VC++ 5.0 version of above warning. */
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
float x;
|
||||
float y;
|
||||
} CoordRec, *CoordPtr;
|
||||
|
||||
typedef struct {
|
||||
int num_coords;
|
||||
const CoordRec *coord;
|
||||
} StrokeRec, *StrokePtr;
|
||||
|
||||
typedef struct {
|
||||
int num_strokes;
|
||||
const StrokeRec *stroke;
|
||||
float center;
|
||||
float right;
|
||||
} StrokeCharRec, *StrokeCharPtr;
|
||||
|
||||
typedef struct {
|
||||
const char *name;
|
||||
int num_chars;
|
||||
const StrokeCharRec *ch;
|
||||
float top;
|
||||
float bottom;
|
||||
} StrokeFontRec, *StrokeFontPtr;
|
||||
|
||||
typedef void *GLUTstrokeFont;
|
||||
|
||||
#endif /* __glutstroke_h__ */
|
||||
#ifndef __glutstroke_h__
|
||||
#define __glutstroke_h__
|
||||
|
||||
/* Copyright (c) Mark J. Kilgard, 1994. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
#if defined(_WIN32)
|
||||
#pragma warning (disable:4244) /* disable bogus conversion warnings */
|
||||
#pragma warning (disable:4305) /* VC++ 5.0 version of above warning. */
|
||||
#endif
|
||||
|
||||
typedef struct {
|
||||
float x;
|
||||
float y;
|
||||
} CoordRec, *CoordPtr;
|
||||
|
||||
typedef struct {
|
||||
int num_coords;
|
||||
const CoordRec *coord;
|
||||
} StrokeRec, *StrokePtr;
|
||||
|
||||
typedef struct {
|
||||
int num_strokes;
|
||||
const StrokeRec *stroke;
|
||||
float center;
|
||||
float right;
|
||||
} StrokeCharRec, *StrokeCharPtr;
|
||||
|
||||
typedef struct {
|
||||
const char *name;
|
||||
int num_chars;
|
||||
const StrokeCharRec *ch;
|
||||
float top;
|
||||
float bottom;
|
||||
} StrokeFontRec, *StrokeFontPtr;
|
||||
|
||||
typedef void *GLUTstrokeFont;
|
||||
|
||||
#endif /* __glutstroke_h__ */
|
||||
|
|
|
@ -1,59 +1,59 @@
|
|||
#ifndef __layerutil_h__
|
||||
#define __layerutil_h__
|
||||
|
||||
/* Copyright (c) Mark J. Kilgard, 1993, 1994. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
/* Based on XLayerUtil.h: Revision: 1.3 */
|
||||
|
||||
#ifdef __VMS
|
||||
#include <GL/vms_x_fix.h>
|
||||
#endif
|
||||
|
||||
#if !defined(_WIN32) && !defined(__OS2__)
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xutil.h>
|
||||
#include <X11/Xmd.h>
|
||||
#endif /* !_WIN32 */
|
||||
|
||||
/* Transparent type values */
|
||||
/* None 0 */
|
||||
#define TransparentPixel 1
|
||||
#define TransparentMask 2
|
||||
|
||||
/* layered visual info template flags */
|
||||
#define VisualLayerMask 0x200
|
||||
#define VisualTransparentType 0x400
|
||||
#define VisualTransparentValue 0x800
|
||||
#define VisualAllLayerMask 0xFFF
|
||||
|
||||
/* layered visual info structure */
|
||||
typedef struct _XLayerVisualInfo {
|
||||
XVisualInfo vinfo;
|
||||
long layer;
|
||||
long type;
|
||||
unsigned long value;
|
||||
} XLayerVisualInfo;
|
||||
|
||||
/* SERVER_OVERLAY_VISUALS property element */
|
||||
typedef struct _OverlayInfo {
|
||||
/* Avoid 64-bit portability problems by being careful to use
|
||||
longs due to the way XGetWindowProperty is specified. Note
|
||||
that these parameters are passed as CARD32s over X
|
||||
protocol. */
|
||||
long overlay_visual;
|
||||
long transparent_type;
|
||||
long value;
|
||||
long layer;
|
||||
} OverlayInfo;
|
||||
|
||||
extern int __glutGetTransparentPixel(Display *, XVisualInfo *);
|
||||
extern XLayerVisualInfo *__glutXGetLayerVisualInfo(Display *,
|
||||
long, XLayerVisualInfo *, int *);
|
||||
extern Status __glutXMatchLayerVisualInfo(Display *,
|
||||
int, int, int, int, XLayerVisualInfo *);
|
||||
|
||||
#endif /* __layerutil_h__ */
|
||||
#ifndef __layerutil_h__
|
||||
#define __layerutil_h__
|
||||
|
||||
/* Copyright (c) Mark J. Kilgard, 1993, 1994. */
|
||||
|
||||
/* This program is freely distributable without licensing fees
|
||||
and is provided without guarantee or warrantee expressed or
|
||||
implied. This program is -not- in the public domain. */
|
||||
|
||||
/* Based on XLayerUtil.h: Revision: 1.3 */
|
||||
|
||||
#ifdef __VMS
|
||||
#include <GL/vms_x_fix.h>
|
||||
#endif
|
||||
|
||||
#if !defined(_WIN32) && !defined(__OS2__)
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xutil.h>
|
||||
#include <X11/Xmd.h>
|
||||
#endif /* !_WIN32 */
|
||||
|
||||
/* Transparent type values */
|
||||
/* None 0 */
|
||||
#define TransparentPixel 1
|
||||
#define TransparentMask 2
|
||||
|
||||
/* layered visual info template flags */
|
||||
#define VisualLayerMask 0x200
|
||||
#define VisualTransparentType 0x400
|
||||
#define VisualTransparentValue 0x800
|
||||
#define VisualAllLayerMask 0xFFF
|
||||
|
||||
/* layered visual info structure */
|
||||
typedef struct _XLayerVisualInfo {
|
||||
XVisualInfo vinfo;
|
||||
long layer;
|
||||
long type;
|
||||
unsigned long value;
|
||||
} XLayerVisualInfo;
|
||||
|
||||
/* SERVER_OVERLAY_VISUALS property element */
|
||||
typedef struct _OverlayInfo {
|
||||
/* Avoid 64-bit portability problems by being careful to use
|
||||
longs due to the way XGetWindowProperty is specified. Note
|
||||
that these parameters are passed as CARD32s over X
|
||||
protocol. */
|
||||
long overlay_visual;
|
||||
long transparent_type;
|
||||
long value;
|
||||
long layer;
|
||||
} OverlayInfo;
|
||||
|
||||
extern int __glutGetTransparentPixel(Display *, XVisualInfo *);
|
||||
extern XLayerVisualInfo *__glutXGetLayerVisualInfo(Display *,
|
||||
long, XLayerVisualInfo *, int *);
|
||||
extern Status __glutXMatchLayerVisualInfo(Display *,
|
||||
int, int, int, int, XLayerVisualInfo *);
|
||||
|
||||
#endif /* __layerutil_h__ */
|
||||
|
|
|
@ -1,94 +1,94 @@
|
|||
|
||||
;-----------------------------------------------------
|
||||
; def Module definition file for the DLL
|
||||
;-----------------------------------------------------
|
||||
|
||||
LIBRARY libGlut INITINSTANCE TERMINSTANCE
|
||||
PROTMODE
|
||||
DATA MULTIPLE NONSHARED READWRITE LOADONCALL
|
||||
CODE LOADONCALL
|
||||
EXPORTS ; Names of exported functions and data
|
||||
|
||||
;*********************************
|
||||
;MesaGLUT
|
||||
glutCommandFunc @3001
|
||||
glutCreateWindow @3002
|
||||
glutCreateSubWindow @3003
|
||||
glutDestroyWindow @3004
|
||||
glutDisplayFunc @3005
|
||||
glutEntryFunc @3006
|
||||
glutExtensionSupported @3007
|
||||
glutIdleFunc @3008
|
||||
glutInit @3009
|
||||
glutInitDisplayMode @3010
|
||||
glutInitWindowPosition @3011
|
||||
glutInitWindowSize @3012
|
||||
glutMainLoop @3013
|
||||
glutGet @3014
|
||||
glutGetColor @3015
|
||||
glutGetWindow @3016
|
||||
glutKeyboardFunc @3017
|
||||
glutMouseFunc @3018
|
||||
glutSpecialFunc @3019
|
||||
glutStrokeCharacter @3020
|
||||
glutSetColor @3021
|
||||
glutSetIconTitle @3022
|
||||
glutSetWindow @3023
|
||||
glutSetWindowTitle @3024
|
||||
|
||||
glutReshapeFunc @3025
|
||||
glutReshapeWindow @3026
|
||||
|
||||
|
||||
glutSwapBuffers @3027
|
||||
glutPostRedisplay @3028
|
||||
glutPositionWindow @3029
|
||||
glutVisibilityFunc @3030
|
||||
glutTimerFunc @3031
|
||||
glutMotionFunc @3032
|
||||
|
||||
glutCreateMenu @3033
|
||||
glutAttachMenu @3034
|
||||
glutDestroyMenu @3035
|
||||
glutAddMenuEntry @3036
|
||||
glutPassiveMotionFunc @3037
|
||||
|
||||
glutSolidCone @3038
|
||||
glutSolidCube @3039
|
||||
glutSolidDodecahedron @3040
|
||||
glutSolidOctahedron @3041
|
||||
glutSolidIcosahedron @3042
|
||||
glutSolidSphere @3043
|
||||
glutSolidTeapot @3044
|
||||
glutSolidTetrahedron @3045
|
||||
glutSolidTorus @3046
|
||||
|
||||
glutWireCone @3047
|
||||
glutWireCube @3048
|
||||
glutWireDodecahedron @3049
|
||||
glutWireIcosahedron @3050
|
||||
glutWireOctahedron @3051
|
||||
glutWireSphere @3052
|
||||
glutWireTetrahedron @3053
|
||||
glutWireTorus @3054
|
||||
glutWireTeapot @3055
|
||||
|
||||
;GL_GLEXT_PROTOTYPES
|
||||
glutBitmapCharacter @3101
|
||||
glutBitmap9By15 @3102
|
||||
glutBitmapHelvetica10 @3103
|
||||
glutBitmapHelvetica12 @3104
|
||||
glutBitmapHelvetica18 @3105
|
||||
glutBitmapTimesRoman24 @3106
|
||||
glutStrokeRoman @3107
|
||||
glutBitmap8By13 @3108
|
||||
|
||||
;Global constants
|
||||
; hab @12001
|
||||
; /* PM anchor block handle */
|
||||
; hpsCurrent @12002
|
||||
XHDC @12004
|
||||
XHWND @12005
|
||||
|
||||
|
||||
|
||||
|
||||
;-----------------------------------------------------
|
||||
; def Module definition file for the DLL
|
||||
;-----------------------------------------------------
|
||||
|
||||
LIBRARY libGlut INITINSTANCE TERMINSTANCE
|
||||
PROTMODE
|
||||
DATA MULTIPLE NONSHARED READWRITE LOADONCALL
|
||||
CODE LOADONCALL
|
||||
EXPORTS ; Names of exported functions and data
|
||||
|
||||
;*********************************
|
||||
;MesaGLUT
|
||||
glutCommandFunc @3001
|
||||
glutCreateWindow @3002
|
||||
glutCreateSubWindow @3003
|
||||
glutDestroyWindow @3004
|
||||
glutDisplayFunc @3005
|
||||
glutEntryFunc @3006
|
||||
glutExtensionSupported @3007
|
||||
glutIdleFunc @3008
|
||||
glutInit @3009
|
||||
glutInitDisplayMode @3010
|
||||
glutInitWindowPosition @3011
|
||||
glutInitWindowSize @3012
|
||||
glutMainLoop @3013
|
||||
glutGet @3014
|
||||
glutGetColor @3015
|
||||
glutGetWindow @3016
|
||||
glutKeyboardFunc @3017
|
||||
glutMouseFunc @3018
|
||||
glutSpecialFunc @3019
|
||||
glutStrokeCharacter @3020
|
||||
glutSetColor @3021
|
||||
glutSetIconTitle @3022
|
||||
glutSetWindow @3023
|
||||
glutSetWindowTitle @3024
|
||||
|
||||
glutReshapeFunc @3025
|
||||
glutReshapeWindow @3026
|
||||
|
||||
|
||||
glutSwapBuffers @3027
|
||||
glutPostRedisplay @3028
|
||||
glutPositionWindow @3029
|
||||
glutVisibilityFunc @3030
|
||||
glutTimerFunc @3031
|
||||
glutMotionFunc @3032
|
||||
|
||||
glutCreateMenu @3033
|
||||
glutAttachMenu @3034
|
||||
glutDestroyMenu @3035
|
||||
glutAddMenuEntry @3036
|
||||
glutPassiveMotionFunc @3037
|
||||
|
||||
glutSolidCone @3038
|
||||
glutSolidCube @3039
|
||||
glutSolidDodecahedron @3040
|
||||
glutSolidOctahedron @3041
|
||||
glutSolidIcosahedron @3042
|
||||
glutSolidSphere @3043
|
||||
glutSolidTeapot @3044
|
||||
glutSolidTetrahedron @3045
|
||||
glutSolidTorus @3046
|
||||
|
||||
glutWireCone @3047
|
||||
glutWireCube @3048
|
||||
glutWireDodecahedron @3049
|
||||
glutWireIcosahedron @3050
|
||||
glutWireOctahedron @3051
|
||||
glutWireSphere @3052
|
||||
glutWireTetrahedron @3053
|
||||
glutWireTorus @3054
|
||||
glutWireTeapot @3055
|
||||
|
||||
;GL_GLEXT_PROTOTYPES
|
||||
glutBitmapCharacter @3101
|
||||
glutBitmap9By15 @3102
|
||||
glutBitmapHelvetica10 @3103
|
||||
glutBitmapHelvetica12 @3104
|
||||
glutBitmapHelvetica18 @3105
|
||||
glutBitmapTimesRoman24 @3106
|
||||
glutStrokeRoman @3107
|
||||
glutBitmap8By13 @3108
|
||||
|
||||
;Global constants
|
||||
; hab @12001
|
||||
; /* PM anchor block handle */
|
||||
; hpsCurrent @12002
|
||||
XHDC @12004
|
||||
XHWND @12005
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,414 +1,414 @@
|
|||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 3.0
|
||||
* Copyright (C) 1995-1998 Brian Paul
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with this library; if not, write to the Free
|
||||
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <allegro.h>
|
||||
#include "buffers.h"
|
||||
#include "context.h"
|
||||
#include "imports.h"
|
||||
#include "matrix.h"
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 3.0
|
||||
* Copyright (C) 1995-1998 Brian Paul
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with this library; if not, write to the Free
|
||||
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <allegro.h>
|
||||
#include "buffers.h"
|
||||
#include "context.h"
|
||||
#include "imports.h"
|
||||
#include "matrix.h"
|
||||
#include "mtypes.h"
|
||||
#include "GL/amesa.h"
|
||||
|
||||
|
||||
struct amesa_visual
|
||||
{
|
||||
GLvisual *GLVisual; /* inherit from GLvisual */
|
||||
GLboolean DBFlag; /* double buffered? */
|
||||
GLuint Depth; /* bits per pixel ( >= 15 ) */
|
||||
};
|
||||
|
||||
|
||||
struct amesa_buffer
|
||||
{
|
||||
GLframebuffer *GLBuffer; /* inherit from GLframebuffer */
|
||||
GLuint Width, Height;
|
||||
BITMAP *Screen;
|
||||
BITMAP *Background;
|
||||
BITMAP *Active;
|
||||
};
|
||||
|
||||
|
||||
struct amesa_context
|
||||
{
|
||||
GLcontext *GLContext; /* inherit from GLcontext */
|
||||
AMesaVisual Visual;
|
||||
AMesaBuffer Buffer;
|
||||
GLuint ClearColor;
|
||||
GLuint CurrentColor;
|
||||
};
|
||||
|
||||
|
||||
static void setup_dd_pointers(GLcontext *ctx);
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/***** drawing functions *****/
|
||||
/**********************************************************************/
|
||||
|
||||
#define FLIP(context, y) (context->Buffer->Height - (y) - 1)
|
||||
|
||||
#include "allegro/generic.h"
|
||||
#include "allegro/direct.h"
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/***** 15-bit accelerated drawing funcs *****/
|
||||
/**********************************************************************/
|
||||
|
||||
IMPLEMENT_WRITE_RGBA_SPAN(15, unsigned short)
|
||||
IMPLEMENT_WRITE_RGB_SPAN(15, unsigned short)
|
||||
IMPLEMENT_WRITE_MONO_RGBA_SPAN(15, unsigned short)
|
||||
IMPLEMENT_READ_RGBA_SPAN(15, unsigned short)
|
||||
IMPLEMENT_WRITE_RGBA_PIXELS(15, unsigned short)
|
||||
IMPLEMENT_WRITE_MONO_RGBA_PIXELS(15, unsigned short)
|
||||
IMPLEMENT_READ_RGBA_PIXELS(15, unsigned short)
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/***** 16-bit accelerated drawing funcs *****/
|
||||
/**********************************************************************/
|
||||
|
||||
IMPLEMENT_WRITE_RGBA_SPAN(16, unsigned short)
|
||||
IMPLEMENT_WRITE_RGB_SPAN(16, unsigned short)
|
||||
IMPLEMENT_WRITE_MONO_RGBA_SPAN(16, unsigned short)
|
||||
IMPLEMENT_READ_RGBA_SPAN(16, unsigned short)
|
||||
IMPLEMENT_WRITE_RGBA_PIXELS(16, unsigned short)
|
||||
IMPLEMENT_WRITE_MONO_RGBA_PIXELS(16, unsigned short)
|
||||
IMPLEMENT_READ_RGBA_PIXELS(16, unsigned short)
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/***** 32-bit accelerated drawing funcs *****/
|
||||
/**********************************************************************/
|
||||
|
||||
IMPLEMENT_WRITE_RGBA_SPAN(32, unsigned long)
|
||||
IMPLEMENT_WRITE_RGB_SPAN(32, unsigned long)
|
||||
IMPLEMENT_WRITE_MONO_RGBA_SPAN(32, unsigned long)
|
||||
IMPLEMENT_READ_RGBA_SPAN(32, unsigned long)
|
||||
IMPLEMENT_WRITE_RGBA_PIXELS(32, unsigned long)
|
||||
IMPLEMENT_WRITE_MONO_RGBA_PIXELS(32, unsigned long)
|
||||
IMPLEMENT_READ_RGBA_PIXELS(32, unsigned long)
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/***** Miscellaneous device driver funcs *****/
|
||||
/**********************************************************************/
|
||||
|
||||
static GLboolean set_buffer(GLcontext *ctx, GLframebuffer *buffer, GLuint bit)
|
||||
{
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx);
|
||||
GLboolean ok = GL_TRUE;
|
||||
|
||||
if (bit == DD_FRONT_LEFT_BIT)
|
||||
context->Buffer->Active = context->Buffer->Screen;
|
||||
|
||||
else if (bit == DD_BACK_LEFT)
|
||||
{
|
||||
if (context->Buffer->Background)
|
||||
context->Buffer->Active = context->Buffer->Background;
|
||||
else
|
||||
ok = GL_FALSE;
|
||||
}
|
||||
|
||||
else
|
||||
ok = GL_FALSE;
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
|
||||
static void get_buffer_size(GLcontext *ctx, GLuint *width, GLuint *height)
|
||||
{
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx);
|
||||
|
||||
*width = context->Buffer->Width;
|
||||
*height = context->Buffer->Height;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* We only implement this function as a mechanism to check if the
|
||||
* framebuffer size has changed (and update corresponding state).
|
||||
*/
|
||||
static void viewport(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h)
|
||||
{
|
||||
/* poll for window size change and realloc software Z/stencil/etc if needed */
|
||||
GLuint newWidth, newHeight;
|
||||
GLframebuffer *buffer = ctx->WinSysDrawBuffer;
|
||||
get_buffer_size( &newWidth, &newHeight );
|
||||
if (buffer->Width != newWidth || buffer->Height != newHeight) {
|
||||
_mesa_resize_framebuffer(ctx, buffer, newWidth, newHeight );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/**********************************************************************/
|
||||
|
||||
static void setup_dd_pointers(GLcontext *ctx)
|
||||
{
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx);
|
||||
|
||||
/* Initialize all the pointers in the driver struct. Do this whenever */
|
||||
/* a new context is made current or we change buffers via set_buffer! */
|
||||
|
||||
ctx->Driver.UpdateState = setup_dd_pointers;
|
||||
ctx->Driver.SetBuffer = set_buffer;
|
||||
ctx->Driver.GetBufferSize = get_buffer_size;
|
||||
ctx->Driver.Viewport = viewport;
|
||||
|
||||
ctx->Driver.Color = set_color_generic;
|
||||
ctx->Driver.ClearColor = clear_color_generic;
|
||||
ctx->Driver.Clear = clear_generic;
|
||||
ctx->Driver.WriteRGBASpan = write_rgba_span_generic;
|
||||
ctx->Driver.WriteRGBSpan = write_rgb_span_generic;
|
||||
ctx->Driver.WriteMonoRGBASpan = write_mono_rgba_span_generic;
|
||||
ctx->Driver.WriteRGBAPixels = write_rgba_pixels_generic;
|
||||
ctx->Driver.WriteMonoRGBAPixels = write_mono_rgba_pixels_generic;
|
||||
ctx->Driver.ReadRGBASpan = read_rgba_span_generic;
|
||||
ctx->Driver.ReadRGBAPixels = read_rgba_pixels_generic;
|
||||
|
||||
if (context->Buffer->Active != screen)
|
||||
{
|
||||
switch (context->Visual->Depth)
|
||||
{
|
||||
case 15:
|
||||
ctx->Driver.WriteRGBASpan = write_rgba_span_15;
|
||||
ctx->Driver.WriteRGBSpan = write_rgb_span_15;
|
||||
ctx->Driver.WriteMonoRGBASpan = write_mono_rgba_span_15;
|
||||
ctx->Driver.WriteRGBAPixels = write_rgba_pixels_15;
|
||||
ctx->Driver.WriteMonoRGBAPixels = write_mono_rgba_pixels_15;
|
||||
ctx->Driver.ReadRGBASpan = read_rgba_span_15;
|
||||
ctx->Driver.ReadRGBAPixels = read_rgba_pixels_15;
|
||||
break;
|
||||
|
||||
case 16:
|
||||
ctx->Driver.WriteRGBASpan = write_rgba_span_16;
|
||||
ctx->Driver.WriteRGBSpan = write_rgb_span_16;
|
||||
ctx->Driver.WriteMonoRGBASpan = write_mono_rgba_span_16;
|
||||
ctx->Driver.WriteRGBAPixels = write_rgba_pixels_16;
|
||||
ctx->Driver.WriteMonoRGBAPixels = write_mono_rgba_pixels_16;
|
||||
ctx->Driver.ReadRGBASpan = read_rgba_span_16;
|
||||
ctx->Driver.ReadRGBAPixels = read_rgba_pixels_16;
|
||||
break;
|
||||
|
||||
case 32:
|
||||
ctx->Driver.WriteRGBASpan = write_rgba_span_32;
|
||||
ctx->Driver.WriteRGBSpan = write_rgb_span_32;
|
||||
ctx->Driver.WriteMonoRGBASpan = write_mono_rgba_span_32;
|
||||
ctx->Driver.WriteRGBAPixels = write_rgba_pixels_32;
|
||||
ctx->Driver.WriteMonoRGBAPixels = write_mono_rgba_pixels_32;
|
||||
ctx->Driver.ReadRGBASpan = read_rgba_span_32;
|
||||
ctx->Driver.ReadRGBAPixels = read_rgba_pixels_32;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/***** AMesa Public API Functions *****/
|
||||
/**********************************************************************/
|
||||
|
||||
|
||||
AMesaVisual AMesaCreateVisual(GLboolean dbFlag, GLint depth,
|
||||
GLint depthSize, GLint stencilSize, GLint accumSize)
|
||||
{
|
||||
AMesaVisual visual;
|
||||
GLbyte redBits, greenBits, blueBits;
|
||||
|
||||
visual = (AMesaVisual)calloc(1, sizeof(struct amesa_visual));
|
||||
if (!visual)
|
||||
return NULL;
|
||||
|
||||
switch (depth)
|
||||
{
|
||||
case 15:
|
||||
redBits = 5;
|
||||
greenBits = 5;
|
||||
blueBits = 5;
|
||||
break;
|
||||
|
||||
case 16:
|
||||
redBits = 5;
|
||||
greenBits = 6;
|
||||
blueBits = 5;
|
||||
break;
|
||||
|
||||
case 24: case 32:
|
||||
redBits = 8;
|
||||
greenBits = 8;
|
||||
blueBits = 8;
|
||||
break;
|
||||
|
||||
default:
|
||||
free(visual);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
visual->DBFlag = dbFlag;
|
||||
visual->Depth = depth;
|
||||
visual->GLVisual = _mesa_create_visual(GL_TRUE, /* rgb mode */
|
||||
dbFlag, /* db_flag */
|
||||
GL_FALSE, /* stereo */
|
||||
redBits, greenBits, blueBits, 8,
|
||||
0, /* index bits */
|
||||
depthSize, /* depth bits */
|
||||
stencilSize,/* stencil bits */
|
||||
accumSize, /* accum bits */
|
||||
accumSize, /* accum bits */
|
||||
accumSize, /* accum bits */
|
||||
accumSize, /* accum bits */
|
||||
1 );
|
||||
if (!visual->GLVisual)
|
||||
{
|
||||
free(visual);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return visual;
|
||||
}
|
||||
|
||||
|
||||
void AMesaDestroyVisual(AMesaVisual visual)
|
||||
{
|
||||
_mesa_destroy_visual(visual->GLVisual);
|
||||
free(visual);
|
||||
}
|
||||
|
||||
|
||||
AMesaBuffer AMesaCreateBuffer(AMesaVisual visual,
|
||||
GLint width, GLint height)
|
||||
{
|
||||
AMesaBuffer buffer;
|
||||
|
||||
buffer = (AMesaBuffer)calloc(1, sizeof(struct amesa_buffer));
|
||||
if (!buffer)
|
||||
return NULL;
|
||||
|
||||
buffer->Screen = NULL;
|
||||
buffer->Background = NULL;
|
||||
buffer->Active = NULL;
|
||||
buffer->Width = width;
|
||||
buffer->Height = height;
|
||||
|
||||
if (visual->DBFlag)
|
||||
{
|
||||
buffer->Background = create_bitmap_ex(visual->Depth, width, height);
|
||||
if (!buffer->Background)
|
||||
{
|
||||
free(buffer);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
buffer->GLBuffer = _mesa_create_framebuffer(visual->GLVisual);
|
||||
if (!buffer->GLBuffer)
|
||||
{
|
||||
if (buffer->Background) destroy_bitmap(buffer->Background);
|
||||
free(buffer);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
|
||||
void AMesaDestroyBuffer(AMesaBuffer buffer)
|
||||
{
|
||||
if (buffer->Screen) destroy_bitmap(buffer->Screen);
|
||||
if (buffer->Background) destroy_bitmap(buffer->Background);
|
||||
_mesa_unreference_framebuffer(&buffer->GLBuffer);
|
||||
free(buffer);
|
||||
}
|
||||
|
||||
|
||||
AMesaContext AMesaCreateContext(AMesaVisual visual,
|
||||
AMesaContext share)
|
||||
{
|
||||
AMesaContext context;
|
||||
GLboolean direct = GL_FALSE;
|
||||
|
||||
context = (AMesaContext)calloc(1, sizeof(struct amesa_context));
|
||||
if (!context)
|
||||
return NULL;
|
||||
|
||||
context->Visual = visual;
|
||||
context->Buffer = NULL;
|
||||
context->ClearColor = 0;
|
||||
context->CurrentColor = 0;
|
||||
context->GLContext = _mesa_create_context(visual->GLVisual,
|
||||
share ? share->GLContext : NULL,
|
||||
(void *) context, GL_FALSE );
|
||||
if (!context->GLContext)
|
||||
{
|
||||
free(context);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return context;
|
||||
}
|
||||
|
||||
|
||||
void AMesaDestroyContext(AMesaContext context)
|
||||
{
|
||||
_mesa_destroy_context(context->GLContext);
|
||||
free(context);
|
||||
}
|
||||
|
||||
|
||||
GLboolean AMesaMakeCurrent(AMesaContext context, AMesaBuffer buffer)
|
||||
{
|
||||
if (context && buffer) {
|
||||
set_color_depth(context->Visual->Depth);
|
||||
if (set_gfx_mode(GFX_AUTODETECT, buffer->Width, buffer->Height, 0, 0) != 0)
|
||||
return GL_FALSE;
|
||||
|
||||
context->Buffer = buffer;
|
||||
buffer->Screen = screen;
|
||||
buffer->Active = buffer->Background ? buffer->Background : screen;
|
||||
|
||||
setup_dd_pointers(context->GLContext);
|
||||
_mesa_make_current(context->GLContext, buffer->GLBuffer);
|
||||
}
|
||||
else {
|
||||
#include "GL/amesa.h"
|
||||
|
||||
|
||||
struct amesa_visual
|
||||
{
|
||||
GLvisual *GLVisual; /* inherit from GLvisual */
|
||||
GLboolean DBFlag; /* double buffered? */
|
||||
GLuint Depth; /* bits per pixel ( >= 15 ) */
|
||||
};
|
||||
|
||||
|
||||
struct amesa_buffer
|
||||
{
|
||||
GLframebuffer *GLBuffer; /* inherit from GLframebuffer */
|
||||
GLuint Width, Height;
|
||||
BITMAP *Screen;
|
||||
BITMAP *Background;
|
||||
BITMAP *Active;
|
||||
};
|
||||
|
||||
|
||||
struct amesa_context
|
||||
{
|
||||
GLcontext *GLContext; /* inherit from GLcontext */
|
||||
AMesaVisual Visual;
|
||||
AMesaBuffer Buffer;
|
||||
GLuint ClearColor;
|
||||
GLuint CurrentColor;
|
||||
};
|
||||
|
||||
|
||||
static void setup_dd_pointers(GLcontext *ctx);
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/***** drawing functions *****/
|
||||
/**********************************************************************/
|
||||
|
||||
#define FLIP(context, y) (context->Buffer->Height - (y) - 1)
|
||||
|
||||
#include "allegro/generic.h"
|
||||
#include "allegro/direct.h"
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/***** 15-bit accelerated drawing funcs *****/
|
||||
/**********************************************************************/
|
||||
|
||||
IMPLEMENT_WRITE_RGBA_SPAN(15, unsigned short)
|
||||
IMPLEMENT_WRITE_RGB_SPAN(15, unsigned short)
|
||||
IMPLEMENT_WRITE_MONO_RGBA_SPAN(15, unsigned short)
|
||||
IMPLEMENT_READ_RGBA_SPAN(15, unsigned short)
|
||||
IMPLEMENT_WRITE_RGBA_PIXELS(15, unsigned short)
|
||||
IMPLEMENT_WRITE_MONO_RGBA_PIXELS(15, unsigned short)
|
||||
IMPLEMENT_READ_RGBA_PIXELS(15, unsigned short)
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/***** 16-bit accelerated drawing funcs *****/
|
||||
/**********************************************************************/
|
||||
|
||||
IMPLEMENT_WRITE_RGBA_SPAN(16, unsigned short)
|
||||
IMPLEMENT_WRITE_RGB_SPAN(16, unsigned short)
|
||||
IMPLEMENT_WRITE_MONO_RGBA_SPAN(16, unsigned short)
|
||||
IMPLEMENT_READ_RGBA_SPAN(16, unsigned short)
|
||||
IMPLEMENT_WRITE_RGBA_PIXELS(16, unsigned short)
|
||||
IMPLEMENT_WRITE_MONO_RGBA_PIXELS(16, unsigned short)
|
||||
IMPLEMENT_READ_RGBA_PIXELS(16, unsigned short)
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/***** 32-bit accelerated drawing funcs *****/
|
||||
/**********************************************************************/
|
||||
|
||||
IMPLEMENT_WRITE_RGBA_SPAN(32, unsigned long)
|
||||
IMPLEMENT_WRITE_RGB_SPAN(32, unsigned long)
|
||||
IMPLEMENT_WRITE_MONO_RGBA_SPAN(32, unsigned long)
|
||||
IMPLEMENT_READ_RGBA_SPAN(32, unsigned long)
|
||||
IMPLEMENT_WRITE_RGBA_PIXELS(32, unsigned long)
|
||||
IMPLEMENT_WRITE_MONO_RGBA_PIXELS(32, unsigned long)
|
||||
IMPLEMENT_READ_RGBA_PIXELS(32, unsigned long)
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/***** Miscellaneous device driver funcs *****/
|
||||
/**********************************************************************/
|
||||
|
||||
static GLboolean set_buffer(GLcontext *ctx, GLframebuffer *buffer, GLuint bit)
|
||||
{
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx);
|
||||
GLboolean ok = GL_TRUE;
|
||||
|
||||
if (bit == DD_FRONT_LEFT_BIT)
|
||||
context->Buffer->Active = context->Buffer->Screen;
|
||||
|
||||
else if (bit == DD_BACK_LEFT)
|
||||
{
|
||||
if (context->Buffer->Background)
|
||||
context->Buffer->Active = context->Buffer->Background;
|
||||
else
|
||||
ok = GL_FALSE;
|
||||
}
|
||||
|
||||
else
|
||||
ok = GL_FALSE;
|
||||
|
||||
return ok;
|
||||
}
|
||||
|
||||
|
||||
static void get_buffer_size(GLcontext *ctx, GLuint *width, GLuint *height)
|
||||
{
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx);
|
||||
|
||||
*width = context->Buffer->Width;
|
||||
*height = context->Buffer->Height;
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* We only implement this function as a mechanism to check if the
|
||||
* framebuffer size has changed (and update corresponding state).
|
||||
*/
|
||||
static void viewport(GLcontext *ctx, GLint x, GLint y, GLsizei w, GLsizei h)
|
||||
{
|
||||
/* poll for window size change and realloc software Z/stencil/etc if needed */
|
||||
GLuint newWidth, newHeight;
|
||||
GLframebuffer *buffer = ctx->WinSysDrawBuffer;
|
||||
get_buffer_size( &newWidth, &newHeight );
|
||||
if (buffer->Width != newWidth || buffer->Height != newHeight) {
|
||||
_mesa_resize_framebuffer(ctx, buffer, newWidth, newHeight );
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/**********************************************************************/
|
||||
|
||||
static void setup_dd_pointers(GLcontext *ctx)
|
||||
{
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx);
|
||||
|
||||
/* Initialize all the pointers in the driver struct. Do this whenever */
|
||||
/* a new context is made current or we change buffers via set_buffer! */
|
||||
|
||||
ctx->Driver.UpdateState = setup_dd_pointers;
|
||||
ctx->Driver.SetBuffer = set_buffer;
|
||||
ctx->Driver.GetBufferSize = get_buffer_size;
|
||||
ctx->Driver.Viewport = viewport;
|
||||
|
||||
ctx->Driver.Color = set_color_generic;
|
||||
ctx->Driver.ClearColor = clear_color_generic;
|
||||
ctx->Driver.Clear = clear_generic;
|
||||
ctx->Driver.WriteRGBASpan = write_rgba_span_generic;
|
||||
ctx->Driver.WriteRGBSpan = write_rgb_span_generic;
|
||||
ctx->Driver.WriteMonoRGBASpan = write_mono_rgba_span_generic;
|
||||
ctx->Driver.WriteRGBAPixels = write_rgba_pixels_generic;
|
||||
ctx->Driver.WriteMonoRGBAPixels = write_mono_rgba_pixels_generic;
|
||||
ctx->Driver.ReadRGBASpan = read_rgba_span_generic;
|
||||
ctx->Driver.ReadRGBAPixels = read_rgba_pixels_generic;
|
||||
|
||||
if (context->Buffer->Active != screen)
|
||||
{
|
||||
switch (context->Visual->Depth)
|
||||
{
|
||||
case 15:
|
||||
ctx->Driver.WriteRGBASpan = write_rgba_span_15;
|
||||
ctx->Driver.WriteRGBSpan = write_rgb_span_15;
|
||||
ctx->Driver.WriteMonoRGBASpan = write_mono_rgba_span_15;
|
||||
ctx->Driver.WriteRGBAPixels = write_rgba_pixels_15;
|
||||
ctx->Driver.WriteMonoRGBAPixels = write_mono_rgba_pixels_15;
|
||||
ctx->Driver.ReadRGBASpan = read_rgba_span_15;
|
||||
ctx->Driver.ReadRGBAPixels = read_rgba_pixels_15;
|
||||
break;
|
||||
|
||||
case 16:
|
||||
ctx->Driver.WriteRGBASpan = write_rgba_span_16;
|
||||
ctx->Driver.WriteRGBSpan = write_rgb_span_16;
|
||||
ctx->Driver.WriteMonoRGBASpan = write_mono_rgba_span_16;
|
||||
ctx->Driver.WriteRGBAPixels = write_rgba_pixels_16;
|
||||
ctx->Driver.WriteMonoRGBAPixels = write_mono_rgba_pixels_16;
|
||||
ctx->Driver.ReadRGBASpan = read_rgba_span_16;
|
||||
ctx->Driver.ReadRGBAPixels = read_rgba_pixels_16;
|
||||
break;
|
||||
|
||||
case 32:
|
||||
ctx->Driver.WriteRGBASpan = write_rgba_span_32;
|
||||
ctx->Driver.WriteRGBSpan = write_rgb_span_32;
|
||||
ctx->Driver.WriteMonoRGBASpan = write_mono_rgba_span_32;
|
||||
ctx->Driver.WriteRGBAPixels = write_rgba_pixels_32;
|
||||
ctx->Driver.WriteMonoRGBAPixels = write_mono_rgba_pixels_32;
|
||||
ctx->Driver.ReadRGBASpan = read_rgba_span_32;
|
||||
ctx->Driver.ReadRGBAPixels = read_rgba_pixels_32;
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
/**********************************************************************/
|
||||
/***** AMesa Public API Functions *****/
|
||||
/**********************************************************************/
|
||||
|
||||
|
||||
AMesaVisual AMesaCreateVisual(GLboolean dbFlag, GLint depth,
|
||||
GLint depthSize, GLint stencilSize, GLint accumSize)
|
||||
{
|
||||
AMesaVisual visual;
|
||||
GLbyte redBits, greenBits, blueBits;
|
||||
|
||||
visual = (AMesaVisual)calloc(1, sizeof(struct amesa_visual));
|
||||
if (!visual)
|
||||
return NULL;
|
||||
|
||||
switch (depth)
|
||||
{
|
||||
case 15:
|
||||
redBits = 5;
|
||||
greenBits = 5;
|
||||
blueBits = 5;
|
||||
break;
|
||||
|
||||
case 16:
|
||||
redBits = 5;
|
||||
greenBits = 6;
|
||||
blueBits = 5;
|
||||
break;
|
||||
|
||||
case 24: case 32:
|
||||
redBits = 8;
|
||||
greenBits = 8;
|
||||
blueBits = 8;
|
||||
break;
|
||||
|
||||
default:
|
||||
free(visual);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
visual->DBFlag = dbFlag;
|
||||
visual->Depth = depth;
|
||||
visual->GLVisual = _mesa_create_visual(GL_TRUE, /* rgb mode */
|
||||
dbFlag, /* db_flag */
|
||||
GL_FALSE, /* stereo */
|
||||
redBits, greenBits, blueBits, 8,
|
||||
0, /* index bits */
|
||||
depthSize, /* depth bits */
|
||||
stencilSize,/* stencil bits */
|
||||
accumSize, /* accum bits */
|
||||
accumSize, /* accum bits */
|
||||
accumSize, /* accum bits */
|
||||
accumSize, /* accum bits */
|
||||
1 );
|
||||
if (!visual->GLVisual)
|
||||
{
|
||||
free(visual);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return visual;
|
||||
}
|
||||
|
||||
|
||||
void AMesaDestroyVisual(AMesaVisual visual)
|
||||
{
|
||||
_mesa_destroy_visual(visual->GLVisual);
|
||||
free(visual);
|
||||
}
|
||||
|
||||
|
||||
AMesaBuffer AMesaCreateBuffer(AMesaVisual visual,
|
||||
GLint width, GLint height)
|
||||
{
|
||||
AMesaBuffer buffer;
|
||||
|
||||
buffer = (AMesaBuffer)calloc(1, sizeof(struct amesa_buffer));
|
||||
if (!buffer)
|
||||
return NULL;
|
||||
|
||||
buffer->Screen = NULL;
|
||||
buffer->Background = NULL;
|
||||
buffer->Active = NULL;
|
||||
buffer->Width = width;
|
||||
buffer->Height = height;
|
||||
|
||||
if (visual->DBFlag)
|
||||
{
|
||||
buffer->Background = create_bitmap_ex(visual->Depth, width, height);
|
||||
if (!buffer->Background)
|
||||
{
|
||||
free(buffer);
|
||||
return NULL;
|
||||
}
|
||||
}
|
||||
|
||||
buffer->GLBuffer = _mesa_create_framebuffer(visual->GLVisual);
|
||||
if (!buffer->GLBuffer)
|
||||
{
|
||||
if (buffer->Background) destroy_bitmap(buffer->Background);
|
||||
free(buffer);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return buffer;
|
||||
}
|
||||
|
||||
|
||||
void AMesaDestroyBuffer(AMesaBuffer buffer)
|
||||
{
|
||||
if (buffer->Screen) destroy_bitmap(buffer->Screen);
|
||||
if (buffer->Background) destroy_bitmap(buffer->Background);
|
||||
_mesa_unreference_framebuffer(&buffer->GLBuffer);
|
||||
free(buffer);
|
||||
}
|
||||
|
||||
|
||||
AMesaContext AMesaCreateContext(AMesaVisual visual,
|
||||
AMesaContext share)
|
||||
{
|
||||
AMesaContext context;
|
||||
GLboolean direct = GL_FALSE;
|
||||
|
||||
context = (AMesaContext)calloc(1, sizeof(struct amesa_context));
|
||||
if (!context)
|
||||
return NULL;
|
||||
|
||||
context->Visual = visual;
|
||||
context->Buffer = NULL;
|
||||
context->ClearColor = 0;
|
||||
context->CurrentColor = 0;
|
||||
context->GLContext = _mesa_create_context(visual->GLVisual,
|
||||
share ? share->GLContext : NULL,
|
||||
(void *) context, GL_FALSE );
|
||||
if (!context->GLContext)
|
||||
{
|
||||
free(context);
|
||||
return NULL;
|
||||
}
|
||||
|
||||
return context;
|
||||
}
|
||||
|
||||
|
||||
void AMesaDestroyContext(AMesaContext context)
|
||||
{
|
||||
_mesa_destroy_context(context->GLContext);
|
||||
free(context);
|
||||
}
|
||||
|
||||
|
||||
GLboolean AMesaMakeCurrent(AMesaContext context, AMesaBuffer buffer)
|
||||
{
|
||||
if (context && buffer) {
|
||||
set_color_depth(context->Visual->Depth);
|
||||
if (set_gfx_mode(GFX_AUTODETECT, buffer->Width, buffer->Height, 0, 0) != 0)
|
||||
return GL_FALSE;
|
||||
|
||||
context->Buffer = buffer;
|
||||
buffer->Screen = screen;
|
||||
buffer->Active = buffer->Background ? buffer->Background : screen;
|
||||
|
||||
setup_dd_pointers(context->GLContext);
|
||||
_mesa_make_current(context->GLContext, buffer->GLBuffer);
|
||||
}
|
||||
else {
|
||||
/* XXX I don't think you want to destroy anything here! */
|
||||
destroy_bitmap(context->Buffer->Screen);
|
||||
context->Buffer->Screen = NULL;
|
||||
context->Buffer->Active = NULL;
|
||||
context->Buffer = NULL;
|
||||
_mesa_make_current(NULL, NULL);
|
||||
}
|
||||
|
||||
return GL_TRUE;
|
||||
}
|
||||
|
||||
|
||||
void AMesaSwapBuffers(AMesaBuffer buffer)
|
||||
{
|
||||
if (buffer->Background) {
|
||||
blit(buffer->Background, buffer->Screen,
|
||||
0, 0, 0, 0,
|
||||
buffer->Width, buffer->Height);
|
||||
}
|
||||
}
|
||||
destroy_bitmap(context->Buffer->Screen);
|
||||
context->Buffer->Screen = NULL;
|
||||
context->Buffer->Active = NULL;
|
||||
context->Buffer = NULL;
|
||||
_mesa_make_current(NULL, NULL);
|
||||
}
|
||||
|
||||
return GL_TRUE;
|
||||
}
|
||||
|
||||
|
||||
void AMesaSwapBuffers(AMesaBuffer buffer)
|
||||
{
|
||||
if (buffer->Background) {
|
||||
blit(buffer->Background, buffer->Screen,
|
||||
0, 0, 0, 0,
|
||||
buffer->Width, buffer->Height);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -1,189 +1,189 @@
|
|||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 3.0
|
||||
* Copyright (C) 1995-1998 Brian Paul
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with this library; if not, write to the Free
|
||||
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
|
||||
#define DESTINATION(BMP, X, Y, TYPE) \
|
||||
({ \
|
||||
BITMAP *_bmp = BMP; \
|
||||
\
|
||||
(TYPE*)(_bmp->line[_bmp->h - (Y) - 1]) + (X); \
|
||||
})
|
||||
|
||||
|
||||
#define IMPLEMENT_WRITE_RGBA_SPAN(DEPTH, TYPE) \
|
||||
static void write_rgba_span_##DEPTH (const GLcontext *ctx, \
|
||||
GLuint n, GLint x, GLint y, \
|
||||
const GLubyte rgba[][4], \
|
||||
const GLubyte mask[]) \
|
||||
{ \
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx); \
|
||||
TYPE *d = DESTINATION(context->Buffer->Active, x, y, TYPE); \
|
||||
\
|
||||
if (mask) \
|
||||
{ \
|
||||
while (n--) \
|
||||
{ \
|
||||
if (mask[0]) d[0] = makecol##DEPTH(rgba[0][RCOMP], rgba[0][GCOMP], rgba[0][BCOMP]); \
|
||||
d++; rgba++; mask++; \
|
||||
} \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
while (n--) \
|
||||
{ \
|
||||
d[0] = makecol##DEPTH(rgba[0][RCOMP], rgba[0][GCOMP], rgba[0][BCOMP]); \
|
||||
d++; rgba++; \
|
||||
} \
|
||||
} \
|
||||
}
|
||||
|
||||
|
||||
#define IMPLEMENT_WRITE_RGB_SPAN(DEPTH, TYPE) \
|
||||
static void write_rgb_span_##DEPTH (const GLcontext *ctx, \
|
||||
GLuint n, GLint x, GLint y, \
|
||||
const GLubyte rgb[][3], \
|
||||
const GLubyte mask[]) \
|
||||
{ \
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx); \
|
||||
TYPE *d = DESTINATION(context->Buffer->Active, x, y, TYPE); \
|
||||
\
|
||||
if (mask) \
|
||||
{ \
|
||||
while (n--) \
|
||||
{ \
|
||||
if (mask[0]) d[0] = makecol##DEPTH(rgb[0][RCOMP], rgb[0][GCOMP], rgb[0][BCOMP]); \
|
||||
d++; rgb++; mask++; \
|
||||
} \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
while (n--) \
|
||||
{ \
|
||||
d[0] = makecol##DEPTH(rgb[0][RCOMP], rgb[0][GCOMP], rgb[0][BCOMP]); \
|
||||
d++; rgb++; \
|
||||
} \
|
||||
} \
|
||||
}
|
||||
|
||||
|
||||
#define IMPLEMENT_WRITE_MONO_RGBA_SPAN(DEPTH, TYPE) \
|
||||
static void write_mono_rgba_span_##DEPTH (const GLcontext *ctx, \
|
||||
GLuint n, GLint x, GLint y, \
|
||||
const GLubyte mask[]) \
|
||||
{ \
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx); \
|
||||
TYPE color = context->CurrentColor; \
|
||||
TYPE *d = DESTINATION(context->Buffer->Active, x, y, TYPE); \
|
||||
\
|
||||
while (n--) \
|
||||
{ \
|
||||
if (mask[0]) d[0] = color; \
|
||||
d++; mask++; \
|
||||
} \
|
||||
}
|
||||
|
||||
|
||||
#define IMPLEMENT_READ_RGBA_SPAN(DEPTH, TYPE) \
|
||||
static void read_rgba_span_##DEPTH (const GLcontext *ctx, \
|
||||
GLuint n, GLint x, GLint y, \
|
||||
GLubyte rgba[][4]) \
|
||||
{ \
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx); \
|
||||
BITMAP *bmp = context->Buffer->Active; \
|
||||
TYPE *d = DESTINATION(bmp, x, y, TYPE); \
|
||||
\
|
||||
while (n--) \
|
||||
{ \
|
||||
rgba[0][RCOMP] = getr##DEPTH(d[0]); \
|
||||
rgba[0][GCOMP] = getg##DEPTH(d[0]); \
|
||||
rgba[0][BCOMP] = getb##DEPTH(d[0]); \
|
||||
rgba[0][ACOMP] = 255; \
|
||||
\
|
||||
d++; rgba++; \
|
||||
} \
|
||||
}
|
||||
|
||||
|
||||
#define IMPLEMENT_WRITE_RGBA_PIXELS(DEPTH, TYPE) \
|
||||
static void write_rgba_pixels_##DEPTH (const GLcontext *ctx, \
|
||||
GLuint n, \
|
||||
const GLint x[], \
|
||||
const GLint y[], \
|
||||
const GLubyte rgba[][4], \
|
||||
const GLubyte mask[]) \
|
||||
{ \
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx); \
|
||||
BITMAP *bmp = context->Buffer->Active; \
|
||||
\
|
||||
while (n--) \
|
||||
{ \
|
||||
if (mask[0]) *DESTINATION(bmp, x[0], y[0], TYPE) = makecol##DEPTH(rgba[0][RCOMP], rgba[0][GCOMP], rgba[0][BCOMP]); \
|
||||
rgba++; x++; y++; mask++; \
|
||||
} \
|
||||
}
|
||||
|
||||
|
||||
|
||||
#define IMPLEMENT_WRITE_MONO_RGBA_PIXELS(DEPTH, TYPE) \
|
||||
static void write_mono_rgba_pixels_##DEPTH (const GLcontext *ctx, \
|
||||
GLuint n, \
|
||||
const GLint x[], \
|
||||
const GLint y[], \
|
||||
const GLubyte mask[]) \
|
||||
{ \
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx); \
|
||||
TYPE color = context->CurrentColor; \
|
||||
BITMAP *bmp = context->Buffer->Active; \
|
||||
\
|
||||
while (n--) \
|
||||
{ \
|
||||
if (mask[0]) *DESTINATION(bmp, x[0], y[0], TYPE) = color; \
|
||||
x++; y++; mask++; \
|
||||
} \
|
||||
}
|
||||
|
||||
|
||||
#define IMPLEMENT_READ_RGBA_PIXELS(DEPTH, TYPE) \
|
||||
static void read_rgba_pixels_##DEPTH (const GLcontext *ctx, \
|
||||
GLuint n, \
|
||||
const GLint x[], \
|
||||
const GLint y[], \
|
||||
GLubyte rgba[][4], \
|
||||
const GLubyte mask[]) \
|
||||
{ \
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx); \
|
||||
BITMAP *bmp = context->Buffer->Active; \
|
||||
\
|
||||
while (n--) \
|
||||
{ \
|
||||
if (mask[0]) \
|
||||
{ \
|
||||
int color = *DESTINATION(bmp, x[0], y[0], TYPE); \
|
||||
\
|
||||
rgba[0][RCOMP] = getr##DEPTH(color); \
|
||||
rgba[0][GCOMP] = getg##DEPTH(color); \
|
||||
rgba[0][BCOMP] = getb##DEPTH(color); \
|
||||
rgba[0][ACOMP] = 255; \
|
||||
} \
|
||||
\
|
||||
x++; y++; rgba++; mask++; \
|
||||
} \
|
||||
}
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 3.0
|
||||
* Copyright (C) 1995-1998 Brian Paul
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with this library; if not, write to the Free
|
||||
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
|
||||
#define DESTINATION(BMP, X, Y, TYPE) \
|
||||
({ \
|
||||
BITMAP *_bmp = BMP; \
|
||||
\
|
||||
(TYPE*)(_bmp->line[_bmp->h - (Y) - 1]) + (X); \
|
||||
})
|
||||
|
||||
|
||||
#define IMPLEMENT_WRITE_RGBA_SPAN(DEPTH, TYPE) \
|
||||
static void write_rgba_span_##DEPTH (const GLcontext *ctx, \
|
||||
GLuint n, GLint x, GLint y, \
|
||||
const GLubyte rgba[][4], \
|
||||
const GLubyte mask[]) \
|
||||
{ \
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx); \
|
||||
TYPE *d = DESTINATION(context->Buffer->Active, x, y, TYPE); \
|
||||
\
|
||||
if (mask) \
|
||||
{ \
|
||||
while (n--) \
|
||||
{ \
|
||||
if (mask[0]) d[0] = makecol##DEPTH(rgba[0][RCOMP], rgba[0][GCOMP], rgba[0][BCOMP]); \
|
||||
d++; rgba++; mask++; \
|
||||
} \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
while (n--) \
|
||||
{ \
|
||||
d[0] = makecol##DEPTH(rgba[0][RCOMP], rgba[0][GCOMP], rgba[0][BCOMP]); \
|
||||
d++; rgba++; \
|
||||
} \
|
||||
} \
|
||||
}
|
||||
|
||||
|
||||
#define IMPLEMENT_WRITE_RGB_SPAN(DEPTH, TYPE) \
|
||||
static void write_rgb_span_##DEPTH (const GLcontext *ctx, \
|
||||
GLuint n, GLint x, GLint y, \
|
||||
const GLubyte rgb[][3], \
|
||||
const GLubyte mask[]) \
|
||||
{ \
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx); \
|
||||
TYPE *d = DESTINATION(context->Buffer->Active, x, y, TYPE); \
|
||||
\
|
||||
if (mask) \
|
||||
{ \
|
||||
while (n--) \
|
||||
{ \
|
||||
if (mask[0]) d[0] = makecol##DEPTH(rgb[0][RCOMP], rgb[0][GCOMP], rgb[0][BCOMP]); \
|
||||
d++; rgb++; mask++; \
|
||||
} \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
while (n--) \
|
||||
{ \
|
||||
d[0] = makecol##DEPTH(rgb[0][RCOMP], rgb[0][GCOMP], rgb[0][BCOMP]); \
|
||||
d++; rgb++; \
|
||||
} \
|
||||
} \
|
||||
}
|
||||
|
||||
|
||||
#define IMPLEMENT_WRITE_MONO_RGBA_SPAN(DEPTH, TYPE) \
|
||||
static void write_mono_rgba_span_##DEPTH (const GLcontext *ctx, \
|
||||
GLuint n, GLint x, GLint y, \
|
||||
const GLubyte mask[]) \
|
||||
{ \
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx); \
|
||||
TYPE color = context->CurrentColor; \
|
||||
TYPE *d = DESTINATION(context->Buffer->Active, x, y, TYPE); \
|
||||
\
|
||||
while (n--) \
|
||||
{ \
|
||||
if (mask[0]) d[0] = color; \
|
||||
d++; mask++; \
|
||||
} \
|
||||
}
|
||||
|
||||
|
||||
#define IMPLEMENT_READ_RGBA_SPAN(DEPTH, TYPE) \
|
||||
static void read_rgba_span_##DEPTH (const GLcontext *ctx, \
|
||||
GLuint n, GLint x, GLint y, \
|
||||
GLubyte rgba[][4]) \
|
||||
{ \
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx); \
|
||||
BITMAP *bmp = context->Buffer->Active; \
|
||||
TYPE *d = DESTINATION(bmp, x, y, TYPE); \
|
||||
\
|
||||
while (n--) \
|
||||
{ \
|
||||
rgba[0][RCOMP] = getr##DEPTH(d[0]); \
|
||||
rgba[0][GCOMP] = getg##DEPTH(d[0]); \
|
||||
rgba[0][BCOMP] = getb##DEPTH(d[0]); \
|
||||
rgba[0][ACOMP] = 255; \
|
||||
\
|
||||
d++; rgba++; \
|
||||
} \
|
||||
}
|
||||
|
||||
|
||||
#define IMPLEMENT_WRITE_RGBA_PIXELS(DEPTH, TYPE) \
|
||||
static void write_rgba_pixels_##DEPTH (const GLcontext *ctx, \
|
||||
GLuint n, \
|
||||
const GLint x[], \
|
||||
const GLint y[], \
|
||||
const GLubyte rgba[][4], \
|
||||
const GLubyte mask[]) \
|
||||
{ \
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx); \
|
||||
BITMAP *bmp = context->Buffer->Active; \
|
||||
\
|
||||
while (n--) \
|
||||
{ \
|
||||
if (mask[0]) *DESTINATION(bmp, x[0], y[0], TYPE) = makecol##DEPTH(rgba[0][RCOMP], rgba[0][GCOMP], rgba[0][BCOMP]); \
|
||||
rgba++; x++; y++; mask++; \
|
||||
} \
|
||||
}
|
||||
|
||||
|
||||
|
||||
#define IMPLEMENT_WRITE_MONO_RGBA_PIXELS(DEPTH, TYPE) \
|
||||
static void write_mono_rgba_pixels_##DEPTH (const GLcontext *ctx, \
|
||||
GLuint n, \
|
||||
const GLint x[], \
|
||||
const GLint y[], \
|
||||
const GLubyte mask[]) \
|
||||
{ \
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx); \
|
||||
TYPE color = context->CurrentColor; \
|
||||
BITMAP *bmp = context->Buffer->Active; \
|
||||
\
|
||||
while (n--) \
|
||||
{ \
|
||||
if (mask[0]) *DESTINATION(bmp, x[0], y[0], TYPE) = color; \
|
||||
x++; y++; mask++; \
|
||||
} \
|
||||
}
|
||||
|
||||
|
||||
#define IMPLEMENT_READ_RGBA_PIXELS(DEPTH, TYPE) \
|
||||
static void read_rgba_pixels_##DEPTH (const GLcontext *ctx, \
|
||||
GLuint n, \
|
||||
const GLint x[], \
|
||||
const GLint y[], \
|
||||
GLubyte rgba[][4], \
|
||||
const GLubyte mask[]) \
|
||||
{ \
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx); \
|
||||
BITMAP *bmp = context->Buffer->Active; \
|
||||
\
|
||||
while (n--) \
|
||||
{ \
|
||||
if (mask[0]) \
|
||||
{ \
|
||||
int color = *DESTINATION(bmp, x[0], y[0], TYPE); \
|
||||
\
|
||||
rgba[0][RCOMP] = getr##DEPTH(color); \
|
||||
rgba[0][GCOMP] = getg##DEPTH(color); \
|
||||
rgba[0][BCOMP] = getb##DEPTH(color); \
|
||||
rgba[0][ACOMP] = 255; \
|
||||
} \
|
||||
\
|
||||
x++; y++; rgba++; mask++; \
|
||||
} \
|
||||
}
|
||||
|
||||
|
|
|
@ -1,234 +1,234 @@
|
|||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 3.0
|
||||
* Copyright (C) 1995-1998 Brian Paul
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with this library; if not, write to the Free
|
||||
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
static void clear_color_generic(GLcontext *ctx, const GLfloat color[4])
|
||||
{
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx);
|
||||
GLubyte r, g, b;
|
||||
CLAMPED_FLOAT_TO_UBYTE(r, color[0]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(g, color[1]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(b, color[2]);
|
||||
context->ClearColor = makecol(r, g, b);
|
||||
}
|
||||
|
||||
|
||||
static void set_color_generic(GLcontext *ctx,
|
||||
GLubyte red, GLubyte green,
|
||||
GLubyte blue, GLubyte alpha)
|
||||
{
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx);
|
||||
|
||||
context->CurrentColor = makecol(red, green, blue);
|
||||
}
|
||||
|
||||
|
||||
static GLbitfield clear_generic(GLcontext *ctx,
|
||||
GLbitfield mask, GLboolean all,
|
||||
GLint x, GLint y,
|
||||
GLint width, GLint height)
|
||||
{
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx);
|
||||
|
||||
if (mask & GL_COLOR_BUFFER_BIT)
|
||||
{
|
||||
if (all)
|
||||
clear_to_color(context->Buffer->Active, context->ClearColor);
|
||||
else
|
||||
rect(context->Buffer->Active,
|
||||
x, y, x+width-1, y+height-1,
|
||||
context->ClearColor);
|
||||
}
|
||||
|
||||
return mask & (~GL_COLOR_BUFFER_BIT);
|
||||
}
|
||||
|
||||
|
||||
static void write_rgba_span_generic(const GLcontext *ctx,
|
||||
GLuint n, GLint x, GLint y,
|
||||
const GLubyte rgba[][4],
|
||||
const GLubyte mask[])
|
||||
{
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx);
|
||||
BITMAP *bmp = context->Buffer->Active;
|
||||
|
||||
y = FLIP(context, y);
|
||||
|
||||
if (mask)
|
||||
{
|
||||
while (n--)
|
||||
{
|
||||
if (mask[0]) putpixel(bmp, x, y, makecol(rgba[0][RCOMP], rgba[0][GCOMP], rgba[0][BCOMP]));
|
||||
x++; mask++; rgba++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
while (n--)
|
||||
{
|
||||
putpixel(bmp, x, y, makecol(rgba[0][RCOMP], rgba[0][GCOMP], rgba[0][BCOMP]));
|
||||
x++; rgba++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void write_rgb_span_generic(const GLcontext *ctx,
|
||||
GLuint n, GLint x, GLint y,
|
||||
const GLubyte rgb[][3],
|
||||
const GLubyte mask[])
|
||||
{
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx);
|
||||
BITMAP *bmp = context->Buffer->Active;
|
||||
|
||||
y = FLIP(context, y);
|
||||
|
||||
if (mask)
|
||||
{
|
||||
while(n--)
|
||||
{
|
||||
if (mask[0]) putpixel(bmp, x, y, makecol(rgb[0][RCOMP], rgb[0][GCOMP], rgb[0][BCOMP]));
|
||||
x++; mask++; rgb++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
while (n--)
|
||||
{
|
||||
putpixel(bmp, x, y, makecol(rgb[0][RCOMP], rgb[0][GCOMP], rgb[0][BCOMP]));
|
||||
x++; rgb++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void write_mono_rgba_span_generic(const GLcontext *ctx,
|
||||
GLuint n, GLint x, GLint y,
|
||||
const GLubyte mask[])
|
||||
{
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx);
|
||||
BITMAP *bmp = context->Buffer->Active;
|
||||
int color = context->CurrentColor;
|
||||
|
||||
y = FLIP(context, y);
|
||||
|
||||
if (mask)
|
||||
{
|
||||
while(n--)
|
||||
{
|
||||
if (mask[0]) putpixel(bmp, x, y, color);
|
||||
x++; mask++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
while(n--)
|
||||
{
|
||||
putpixel(bmp, x, y, color);
|
||||
x++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void read_rgba_span_generic(const GLcontext *ctx,
|
||||
GLuint n, GLint x, GLint y,
|
||||
GLubyte rgba[][4])
|
||||
{
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx);
|
||||
BITMAP *bmp = context->Buffer->Active;
|
||||
|
||||
y = FLIP(context, y);
|
||||
|
||||
while (n--)
|
||||
{
|
||||
int color = getpixel(bmp, x, y);
|
||||
|
||||
rgba[0][RCOMP] = getr(color);
|
||||
rgba[0][GCOMP] = getg(color);
|
||||
rgba[0][BCOMP] = getb(color);
|
||||
rgba[0][ACOMP] = 255;
|
||||
|
||||
x++; rgba++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void write_rgba_pixels_generic(const GLcontext *ctx,
|
||||
GLuint n,
|
||||
const GLint x[],
|
||||
const GLint y[],
|
||||
const GLubyte rgba[][4],
|
||||
const GLubyte mask[])
|
||||
{
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx);
|
||||
BITMAP *bmp = context->Buffer->Active;
|
||||
|
||||
while (n--)
|
||||
{
|
||||
if (mask[0]) putpixel(bmp, x[0], FLIP(context, y[0]), makecol(rgba[0][RCOMP], rgba[0][GCOMP], rgba[0][BCOMP]));
|
||||
x++; y++; mask++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void write_mono_rgba_pixels_generic(const GLcontext *ctx,
|
||||
GLuint n,
|
||||
const GLint x[],
|
||||
const GLint y[],
|
||||
const GLubyte mask[])
|
||||
{
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx);
|
||||
BITMAP *bmp = context->Buffer->Active;
|
||||
int color = context->CurrentColor;
|
||||
|
||||
while (n--)
|
||||
{
|
||||
if (mask[0]) putpixel(bmp, x[0], FLIP(context, y[0]), color);
|
||||
x++; y++; mask++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void read_rgba_pixels_generic(const GLcontext *ctx,
|
||||
GLuint n,
|
||||
const GLint x[],
|
||||
const GLint y[],
|
||||
GLubyte rgba[][4],
|
||||
const GLubyte mask[])
|
||||
{
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx);
|
||||
BITMAP *bmp = context->Buffer->Active;
|
||||
|
||||
while (n--)
|
||||
{
|
||||
if (mask[0])
|
||||
{
|
||||
int color = getpixel(bmp, x[0], FLIP(context, y[0]));
|
||||
|
||||
rgba[0][RCOMP] = getr(color);
|
||||
rgba[0][GCOMP] = getg(color);
|
||||
rgba[0][BCOMP] = getb(color);
|
||||
rgba[0][ACOMP] = 255;
|
||||
}
|
||||
|
||||
x++; y++; mask++; rgba++;
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* Mesa 3-D graphics library
|
||||
* Version: 3.0
|
||||
* Copyright (C) 1995-1998 Brian Paul
|
||||
*
|
||||
* This library is free software; you can redistribute it and/or
|
||||
* modify it under the terms of the GNU Library General Public
|
||||
* License as published by the Free Software Foundation; either
|
||||
* version 2 of the License, or (at your option) any later version.
|
||||
*
|
||||
* This library is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||
* Library General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU Library General Public
|
||||
* License along with this library; if not, write to the Free
|
||||
* Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||
*/
|
||||
|
||||
static void clear_color_generic(GLcontext *ctx, const GLfloat color[4])
|
||||
{
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx);
|
||||
GLubyte r, g, b;
|
||||
CLAMPED_FLOAT_TO_UBYTE(r, color[0]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(g, color[1]);
|
||||
CLAMPED_FLOAT_TO_UBYTE(b, color[2]);
|
||||
context->ClearColor = makecol(r, g, b);
|
||||
}
|
||||
|
||||
|
||||
static void set_color_generic(GLcontext *ctx,
|
||||
GLubyte red, GLubyte green,
|
||||
GLubyte blue, GLubyte alpha)
|
||||
{
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx);
|
||||
|
||||
context->CurrentColor = makecol(red, green, blue);
|
||||
}
|
||||
|
||||
|
||||
static GLbitfield clear_generic(GLcontext *ctx,
|
||||
GLbitfield mask, GLboolean all,
|
||||
GLint x, GLint y,
|
||||
GLint width, GLint height)
|
||||
{
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx);
|
||||
|
||||
if (mask & GL_COLOR_BUFFER_BIT)
|
||||
{
|
||||
if (all)
|
||||
clear_to_color(context->Buffer->Active, context->ClearColor);
|
||||
else
|
||||
rect(context->Buffer->Active,
|
||||
x, y, x+width-1, y+height-1,
|
||||
context->ClearColor);
|
||||
}
|
||||
|
||||
return mask & (~GL_COLOR_BUFFER_BIT);
|
||||
}
|
||||
|
||||
|
||||
static void write_rgba_span_generic(const GLcontext *ctx,
|
||||
GLuint n, GLint x, GLint y,
|
||||
const GLubyte rgba[][4],
|
||||
const GLubyte mask[])
|
||||
{
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx);
|
||||
BITMAP *bmp = context->Buffer->Active;
|
||||
|
||||
y = FLIP(context, y);
|
||||
|
||||
if (mask)
|
||||
{
|
||||
while (n--)
|
||||
{
|
||||
if (mask[0]) putpixel(bmp, x, y, makecol(rgba[0][RCOMP], rgba[0][GCOMP], rgba[0][BCOMP]));
|
||||
x++; mask++; rgba++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
while (n--)
|
||||
{
|
||||
putpixel(bmp, x, y, makecol(rgba[0][RCOMP], rgba[0][GCOMP], rgba[0][BCOMP]));
|
||||
x++; rgba++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void write_rgb_span_generic(const GLcontext *ctx,
|
||||
GLuint n, GLint x, GLint y,
|
||||
const GLubyte rgb[][3],
|
||||
const GLubyte mask[])
|
||||
{
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx);
|
||||
BITMAP *bmp = context->Buffer->Active;
|
||||
|
||||
y = FLIP(context, y);
|
||||
|
||||
if (mask)
|
||||
{
|
||||
while(n--)
|
||||
{
|
||||
if (mask[0]) putpixel(bmp, x, y, makecol(rgb[0][RCOMP], rgb[0][GCOMP], rgb[0][BCOMP]));
|
||||
x++; mask++; rgb++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
while (n--)
|
||||
{
|
||||
putpixel(bmp, x, y, makecol(rgb[0][RCOMP], rgb[0][GCOMP], rgb[0][BCOMP]));
|
||||
x++; rgb++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void write_mono_rgba_span_generic(const GLcontext *ctx,
|
||||
GLuint n, GLint x, GLint y,
|
||||
const GLubyte mask[])
|
||||
{
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx);
|
||||
BITMAP *bmp = context->Buffer->Active;
|
||||
int color = context->CurrentColor;
|
||||
|
||||
y = FLIP(context, y);
|
||||
|
||||
if (mask)
|
||||
{
|
||||
while(n--)
|
||||
{
|
||||
if (mask[0]) putpixel(bmp, x, y, color);
|
||||
x++; mask++;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
while(n--)
|
||||
{
|
||||
putpixel(bmp, x, y, color);
|
||||
x++;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void read_rgba_span_generic(const GLcontext *ctx,
|
||||
GLuint n, GLint x, GLint y,
|
||||
GLubyte rgba[][4])
|
||||
{
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx);
|
||||
BITMAP *bmp = context->Buffer->Active;
|
||||
|
||||
y = FLIP(context, y);
|
||||
|
||||
while (n--)
|
||||
{
|
||||
int color = getpixel(bmp, x, y);
|
||||
|
||||
rgba[0][RCOMP] = getr(color);
|
||||
rgba[0][GCOMP] = getg(color);
|
||||
rgba[0][BCOMP] = getb(color);
|
||||
rgba[0][ACOMP] = 255;
|
||||
|
||||
x++; rgba++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void write_rgba_pixels_generic(const GLcontext *ctx,
|
||||
GLuint n,
|
||||
const GLint x[],
|
||||
const GLint y[],
|
||||
const GLubyte rgba[][4],
|
||||
const GLubyte mask[])
|
||||
{
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx);
|
||||
BITMAP *bmp = context->Buffer->Active;
|
||||
|
||||
while (n--)
|
||||
{
|
||||
if (mask[0]) putpixel(bmp, x[0], FLIP(context, y[0]), makecol(rgba[0][RCOMP], rgba[0][GCOMP], rgba[0][BCOMP]));
|
||||
x++; y++; mask++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void write_mono_rgba_pixels_generic(const GLcontext *ctx,
|
||||
GLuint n,
|
||||
const GLint x[],
|
||||
const GLint y[],
|
||||
const GLubyte mask[])
|
||||
{
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx);
|
||||
BITMAP *bmp = context->Buffer->Active;
|
||||
int color = context->CurrentColor;
|
||||
|
||||
while (n--)
|
||||
{
|
||||
if (mask[0]) putpixel(bmp, x[0], FLIP(context, y[0]), color);
|
||||
x++; y++; mask++;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
static void read_rgba_pixels_generic(const GLcontext *ctx,
|
||||
GLuint n,
|
||||
const GLint x[],
|
||||
const GLint y[],
|
||||
GLubyte rgba[][4],
|
||||
const GLubyte mask[])
|
||||
{
|
||||
AMesaContext context = (AMesaContext)(ctx->DriverCtx);
|
||||
BITMAP *bmp = context->Buffer->Active;
|
||||
|
||||
while (n--)
|
||||
{
|
||||
if (mask[0])
|
||||
{
|
||||
int color = getpixel(bmp, x[0], FLIP(context, y[0]));
|
||||
|
||||
rgba[0][RCOMP] = getr(color);
|
||||
rgba[0][GCOMP] = getg(color);
|
||||
rgba[0][BCOMP] = getb(color);
|
||||
rgba[0][ACOMP] = 255;
|
||||
}
|
||||
|
||||
x++; y++; mask++; rgba++;
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,250 +1,250 @@
|
|||
/*===========================================================================*/
|
||||
/* */
|
||||
/* Mesa-3.0 DirectX 6 Driver Build 5 */
|
||||
/* */
|
||||
/* By Leigh McRae */
|
||||
/* */
|
||||
/* http://www.altsoftware.com/ */
|
||||
/* */
|
||||
/* Copyright (c) 1999-1998 alt.software inc. All Rights Reserved */
|
||||
/*===========================================================================*/
|
||||
#include "D3DHAL.h"
|
||||
/*===========================================================================*/
|
||||
/* Macros. */
|
||||
/*===========================================================================*/
|
||||
#define SRCBLEND_MAP(gl,d3d,fall) if ( pHAL->D3DHWDevDesc.dpcTriCaps.dwSrcBlendCaps & d3d ) \
|
||||
{ \
|
||||
sprintf( buffer, "SRC Blend: %s -> %s", # gl, # d3d ); \
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), buffer )); \
|
||||
pShared->dwSrcBlendCaps[index] = d3d; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
sprintf( buffer, "SRC Blend: %s -> %s", # gl, # fall ); \
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), buffer )); \
|
||||
pShared->dwSrcBlendCaps[index] = fall; \
|
||||
}
|
||||
#define DSTBLEND_MAP(gl,d3d,fall) if ( pHAL->D3DHWDevDesc.dpcTriCaps.dwDestBlendCaps & d3d ) \
|
||||
{ \
|
||||
sprintf( buffer, "DST Blend: %s -> %s", # gl, # d3d ); \
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), buffer )); \
|
||||
pShared->dwDestBlendCaps[index] = d3d; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
sprintf( buffer, "DST Blend: %s -> %s", # gl, # fall ); \
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), buffer )); \
|
||||
pShared->dwDestBlendCaps[index] = fall; \
|
||||
}
|
||||
|
||||
/*===========================================================================*/
|
||||
/* I use this function to handle the fact that the D3D texture blending and */
|
||||
/* OpenGL texture blending functions don't map one to one. Also there is the*/
|
||||
/* problem with cards not supporting all the D3D functions. So I use the CAPS*/
|
||||
/* of the card to make a table of functions that will have defaults for the */
|
||||
/* unsupported functions. */
|
||||
/* So first I fill the table with the fallback function then I check to see */
|
||||
/* if the card supports the requested function. If it does I replace the */
|
||||
/* default thats already in the array. Now order does matter as I used an */
|
||||
/* enum type in D3DShared.h so that the mapping would be a little easier. */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
void AlphaBlendTableHAL( PMESAD3DHAL pHAL )
|
||||
{
|
||||
PMESAD3DSHARED pShared = &pHAL->shared;
|
||||
int index;
|
||||
char buffer[128];
|
||||
|
||||
DPF(( DBG_FUNC, "AlphaBlendTableHAL();" ));
|
||||
|
||||
/* Make the fallback for the Source blend. */
|
||||
for( index = 0; index < 14; index++ )
|
||||
{
|
||||
switch( index )
|
||||
{
|
||||
case s_zero:
|
||||
SRCBLEND_MAP( GL_ZERO, D3DBLEND_ZERO, D3DBLEND_ONE );
|
||||
break;
|
||||
case s_one:
|
||||
SRCBLEND_MAP( GL_ONE, D3DBLEND_ONE, D3DBLEND_ONE );
|
||||
break;
|
||||
case s_dst_color:
|
||||
SRCBLEND_MAP( GL_DST_COLOR, D3DBLEND_DESTCOLOR, D3DBLEND_ONE );
|
||||
break;
|
||||
case s_one_minus_dst_color:
|
||||
SRCBLEND_MAP( GL_ONE_MINUS_DST_COLOR, D3DBLEND_INVDESTCOLOR, D3DBLEND_ONE );
|
||||
break;
|
||||
case s_src_alpha:
|
||||
SRCBLEND_MAP( GL_SRC_ALPHA, D3DBLEND_SRCALPHA, D3DBLEND_ONE );
|
||||
break;
|
||||
case s_one_minus_src_alpha:
|
||||
SRCBLEND_MAP( GL_ONE_MINUS_SRC_ALPHA, D3DBLEND_INVSRCALPHA, D3DBLEND_ONE );
|
||||
break;
|
||||
case s_dst_alpha:
|
||||
SRCBLEND_MAP( GL_DST_ALPHA, D3DBLEND_DESTALPHA, D3DBLEND_ONE );
|
||||
break;
|
||||
case s_one_minus_dst_alpha:
|
||||
SRCBLEND_MAP( GL_ONE_MINUS_DST_ALPHA, D3DBLEND_INVDESTALPHA, D3DBLEND_ONE );
|
||||
break;
|
||||
case s_src_alpha_saturate:
|
||||
SRCBLEND_MAP( GL_SRC_ALPHA_SATURATE, D3DBLEND_SRCALPHASAT, D3DBLEND_ONE );
|
||||
break;
|
||||
case s_constant_color:
|
||||
SRCBLEND_MAP( GL_CONSTANT_COLOR, D3DBLEND_SRCCOLOR, D3DBLEND_ONE );
|
||||
break;
|
||||
case s_one_minus_constant_color:
|
||||
SRCBLEND_MAP( GL_ONE_MINUS_CONSTANT_COLOR, D3DBLEND_INVSRCCOLOR, D3DBLEND_ONE );
|
||||
break;
|
||||
case s_constant_alpha:
|
||||
SRCBLEND_MAP( GL_CONSTANT_ALPHA, D3DBLEND_BOTHSRCALPHA, D3DBLEND_ONE );
|
||||
break;
|
||||
case s_one_minus_constant_alpha:
|
||||
SRCBLEND_MAP( GL_ONE_MINUS_CONSTANT_ALPHA, D3DBLEND_BOTHINVSRCALPHA, D3DBLEND_ONE );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Make the fallback for the Destination blend. */
|
||||
for( index = 0; index < 14; index++ )
|
||||
{
|
||||
switch( index )
|
||||
{
|
||||
case d_zero:
|
||||
DSTBLEND_MAP( GL_ZERO, D3DBLEND_ZERO, D3DBLEND_ONE );
|
||||
break;
|
||||
case d_one:
|
||||
DSTBLEND_MAP( GL_ONE, D3DBLEND_ONE, D3DBLEND_ONE );
|
||||
break;
|
||||
case d_src_color:
|
||||
DSTBLEND_MAP( GL_SRC_COLOR, D3DBLEND_SRCCOLOR, D3DBLEND_ONE );
|
||||
break;
|
||||
case d_one_minus_src_color:
|
||||
DSTBLEND_MAP( GL_ONE_MINUS_SRC_COLOR, D3DBLEND_INVSRCCOLOR, D3DBLEND_ONE );
|
||||
break;
|
||||
case d_src_alpha:
|
||||
DSTBLEND_MAP( GL_SRC_ALPHA, D3DBLEND_SRCALPHA, D3DBLEND_ONE );
|
||||
break;
|
||||
case d_one_minus_src_alpha:
|
||||
DSTBLEND_MAP( GL_ONE_MINUS_SRC_ALPHA, D3DBLEND_INVSRCALPHA, D3DBLEND_ONE );
|
||||
break;
|
||||
case d_dst_alpha:
|
||||
DSTBLEND_MAP( GL_DST_ALPHA, D3DBLEND_DESTALPHA, D3DBLEND_ONE );
|
||||
break;
|
||||
case d_one_minus_dst_alpha:
|
||||
DSTBLEND_MAP( GL_ONE_MINUS_DST_ALPHA, D3DBLEND_INVDESTALPHA, D3DBLEND_ONE );
|
||||
break;
|
||||
case d_constant_color:
|
||||
DSTBLEND_MAP( GL_CONSTANT_COLOR, D3DBLEND_DESTCOLOR, D3DBLEND_ONE );
|
||||
break;
|
||||
case d_one_minus_constant_color:
|
||||
DSTBLEND_MAP( GL_ONE_MINUS_CONSTANT_COLOR, D3DBLEND_INVDESTCOLOR, D3DBLEND_ONE );
|
||||
break;
|
||||
case d_constant_alpha:
|
||||
DSTBLEND_MAP( GL_CONSTANT_ALPHAR, D3DBLEND_BOTHSRCALPHA, D3DBLEND_ONE );
|
||||
break;
|
||||
case d_one_minus_constant_alpha:
|
||||
DSTBLEND_MAP( GL_ONE_MINUS_CONSTANT_ALPHA, D3DBLEND_BOTHINVSRCALPHA, D3DBLEND_ONE );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Make the fallbacks for the texture functions. */
|
||||
for( index = 0; index < 4; index++ )
|
||||
{
|
||||
switch( index )
|
||||
{
|
||||
case d3dtblend_decal:
|
||||
if ( pHAL->D3DHWDevDesc.dpcTriCaps.dwTextureBlendCaps & D3DTBLEND_DECAL )
|
||||
{
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), "D3DTBLEND_DECAL -> D3DTBLEND_DECAL" ));
|
||||
pShared->dwTexFunc[index] = D3DTBLEND_DECAL;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( pHAL->D3DHWDevDesc.dpcTriCaps.dwTextureBlendCaps & D3DTBLEND_MODULATE )
|
||||
{
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), "D3DTBLEND_DECAL -> D3DTBLEND_MODULATE" ));
|
||||
pShared->dwTexFunc[index] = D3DTBLEND_MODULATE;
|
||||
}
|
||||
else
|
||||
{
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), "D3DTBLEND_DECAL -> D3DTBLEND_ADD" ));
|
||||
pShared->dwTexFunc[index] = D3DTBLEND_ADD;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case d3dtblend_decalalpha:
|
||||
if ( pHAL->D3DHWDevDesc.dpcTriCaps.dwTextureBlendCaps & D3DTBLEND_DECALALPHA )
|
||||
{
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), "D3DTBLEND_DECALALPHA -> D3DTBLEND_DECALALPHA" ));
|
||||
pShared->dwTexFunc[index] = D3DTBLEND_DECALALPHA;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( pHAL->D3DHWDevDesc.dpcTriCaps.dwTextureBlendCaps & D3DTBLEND_DECAL )
|
||||
{
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), "D3DTBLEND_DECALALPA -> D3DTBLEND_DECAL" ));
|
||||
pShared->dwTexFunc[index] = D3DTBLEND_DECAL;
|
||||
}
|
||||
else
|
||||
{
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), "D3DTBLEND_DECALALPHA -> D3DTBLEND_ADD" ));
|
||||
pShared->dwTexFunc[index] = D3DTBLEND_ADD;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case d3dtblend_modulate:
|
||||
if ( pHAL->D3DHWDevDesc.dpcTriCaps.dwTextureBlendCaps & D3DTBLEND_MODULATE )
|
||||
{
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), "D3DTBLEND_MODULATE -> D3DTBLEND_MODULATE" ));
|
||||
pShared->dwTexFunc[index] = D3DTBLEND_MODULATE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( pHAL->D3DHWDevDesc.dpcTriCaps.dwTextureBlendCaps & D3DTBLEND_MODULATEALPHA )
|
||||
{
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), "D3DTBLEND_MODULATE -> D3DTBLEND_MODULATEALPHA" ));
|
||||
pShared->dwTexFunc[index] = D3DTBLEND_MODULATEALPHA;
|
||||
}
|
||||
else if ( pHAL->D3DHWDevDesc.dpcTriCaps.dwTextureBlendCaps & D3DTBLEND_DECAL )
|
||||
{
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), "D3DTBLEND_MODULATE -> D3DTBLEND_DECAL" ));
|
||||
pShared->dwTexFunc[index] = D3DTBLEND_DECAL;
|
||||
}
|
||||
else
|
||||
{
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), "D3DTBLEND_MODULATE -> D3DTBLEND_ADD" ));
|
||||
pShared->dwTexFunc[index] = D3DTBLEND_ADD;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case d3dtblend_modulatealpha:
|
||||
if ( pHAL->D3DHWDevDesc.dpcTriCaps.dwTextureBlendCaps & D3DTBLEND_MODULATEALPHA )
|
||||
{
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), "D3DTBLEND_MODULATEALPHA -> D3DTBLEND_MODULATEALPHA" ));
|
||||
pShared->dwTexFunc[index] = D3DTBLEND_MODULATEALPHA;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( pHAL->D3DHWDevDesc.dpcTriCaps.dwTextureBlendCaps & D3DTBLEND_MODULATE )
|
||||
{
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), "D3DTBLEND_MODULATEALPHA -> D3DTBLEND_MODULATE" ));
|
||||
pShared->dwTexFunc[index] = D3DTBLEND_MODULATE;
|
||||
}
|
||||
else if ( pHAL->D3DHWDevDesc.dpcTriCaps.dwTextureBlendCaps & D3DTBLEND_DECAL )
|
||||
{
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), "D3DTBLEND_MODULATEALPHA -> D3DTBLEND_DECALE" ));
|
||||
pShared->dwTexFunc[index] = D3DTBLEND_DECAL;
|
||||
}
|
||||
else
|
||||
{
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), "D3DTBLEND_MODULATEALPHA -> D3DTBLEND_ADD" ));
|
||||
pShared->dwTexFunc[index] = D3DTBLEND_ADD;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
/*===========================================================================*/
|
||||
/* */
|
||||
/* Mesa-3.0 DirectX 6 Driver Build 5 */
|
||||
/* */
|
||||
/* By Leigh McRae */
|
||||
/* */
|
||||
/* http://www.altsoftware.com/ */
|
||||
/* */
|
||||
/* Copyright (c) 1999-1998 alt.software inc. All Rights Reserved */
|
||||
/*===========================================================================*/
|
||||
#include "D3DHAL.h"
|
||||
/*===========================================================================*/
|
||||
/* Macros. */
|
||||
/*===========================================================================*/
|
||||
#define SRCBLEND_MAP(gl,d3d,fall) if ( pHAL->D3DHWDevDesc.dpcTriCaps.dwSrcBlendCaps & d3d ) \
|
||||
{ \
|
||||
sprintf( buffer, "SRC Blend: %s -> %s", # gl, # d3d ); \
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), buffer )); \
|
||||
pShared->dwSrcBlendCaps[index] = d3d; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
sprintf( buffer, "SRC Blend: %s -> %s", # gl, # fall ); \
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), buffer )); \
|
||||
pShared->dwSrcBlendCaps[index] = fall; \
|
||||
}
|
||||
#define DSTBLEND_MAP(gl,d3d,fall) if ( pHAL->D3DHWDevDesc.dpcTriCaps.dwDestBlendCaps & d3d ) \
|
||||
{ \
|
||||
sprintf( buffer, "DST Blend: %s -> %s", # gl, # d3d ); \
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), buffer )); \
|
||||
pShared->dwDestBlendCaps[index] = d3d; \
|
||||
} \
|
||||
else \
|
||||
{ \
|
||||
sprintf( buffer, "DST Blend: %s -> %s", # gl, # fall ); \
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), buffer )); \
|
||||
pShared->dwDestBlendCaps[index] = fall; \
|
||||
}
|
||||
|
||||
/*===========================================================================*/
|
||||
/* I use this function to handle the fact that the D3D texture blending and */
|
||||
/* OpenGL texture blending functions don't map one to one. Also there is the*/
|
||||
/* problem with cards not supporting all the D3D functions. So I use the CAPS*/
|
||||
/* of the card to make a table of functions that will have defaults for the */
|
||||
/* unsupported functions. */
|
||||
/* So first I fill the table with the fallback function then I check to see */
|
||||
/* if the card supports the requested function. If it does I replace the */
|
||||
/* default thats already in the array. Now order does matter as I used an */
|
||||
/* enum type in D3DShared.h so that the mapping would be a little easier. */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
void AlphaBlendTableHAL( PMESAD3DHAL pHAL )
|
||||
{
|
||||
PMESAD3DSHARED pShared = &pHAL->shared;
|
||||
int index;
|
||||
char buffer[128];
|
||||
|
||||
DPF(( DBG_FUNC, "AlphaBlendTableHAL();" ));
|
||||
|
||||
/* Make the fallback for the Source blend. */
|
||||
for( index = 0; index < 14; index++ )
|
||||
{
|
||||
switch( index )
|
||||
{
|
||||
case s_zero:
|
||||
SRCBLEND_MAP( GL_ZERO, D3DBLEND_ZERO, D3DBLEND_ONE );
|
||||
break;
|
||||
case s_one:
|
||||
SRCBLEND_MAP( GL_ONE, D3DBLEND_ONE, D3DBLEND_ONE );
|
||||
break;
|
||||
case s_dst_color:
|
||||
SRCBLEND_MAP( GL_DST_COLOR, D3DBLEND_DESTCOLOR, D3DBLEND_ONE );
|
||||
break;
|
||||
case s_one_minus_dst_color:
|
||||
SRCBLEND_MAP( GL_ONE_MINUS_DST_COLOR, D3DBLEND_INVDESTCOLOR, D3DBLEND_ONE );
|
||||
break;
|
||||
case s_src_alpha:
|
||||
SRCBLEND_MAP( GL_SRC_ALPHA, D3DBLEND_SRCALPHA, D3DBLEND_ONE );
|
||||
break;
|
||||
case s_one_minus_src_alpha:
|
||||
SRCBLEND_MAP( GL_ONE_MINUS_SRC_ALPHA, D3DBLEND_INVSRCALPHA, D3DBLEND_ONE );
|
||||
break;
|
||||
case s_dst_alpha:
|
||||
SRCBLEND_MAP( GL_DST_ALPHA, D3DBLEND_DESTALPHA, D3DBLEND_ONE );
|
||||
break;
|
||||
case s_one_minus_dst_alpha:
|
||||
SRCBLEND_MAP( GL_ONE_MINUS_DST_ALPHA, D3DBLEND_INVDESTALPHA, D3DBLEND_ONE );
|
||||
break;
|
||||
case s_src_alpha_saturate:
|
||||
SRCBLEND_MAP( GL_SRC_ALPHA_SATURATE, D3DBLEND_SRCALPHASAT, D3DBLEND_ONE );
|
||||
break;
|
||||
case s_constant_color:
|
||||
SRCBLEND_MAP( GL_CONSTANT_COLOR, D3DBLEND_SRCCOLOR, D3DBLEND_ONE );
|
||||
break;
|
||||
case s_one_minus_constant_color:
|
||||
SRCBLEND_MAP( GL_ONE_MINUS_CONSTANT_COLOR, D3DBLEND_INVSRCCOLOR, D3DBLEND_ONE );
|
||||
break;
|
||||
case s_constant_alpha:
|
||||
SRCBLEND_MAP( GL_CONSTANT_ALPHA, D3DBLEND_BOTHSRCALPHA, D3DBLEND_ONE );
|
||||
break;
|
||||
case s_one_minus_constant_alpha:
|
||||
SRCBLEND_MAP( GL_ONE_MINUS_CONSTANT_ALPHA, D3DBLEND_BOTHINVSRCALPHA, D3DBLEND_ONE );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Make the fallback for the Destination blend. */
|
||||
for( index = 0; index < 14; index++ )
|
||||
{
|
||||
switch( index )
|
||||
{
|
||||
case d_zero:
|
||||
DSTBLEND_MAP( GL_ZERO, D3DBLEND_ZERO, D3DBLEND_ONE );
|
||||
break;
|
||||
case d_one:
|
||||
DSTBLEND_MAP( GL_ONE, D3DBLEND_ONE, D3DBLEND_ONE );
|
||||
break;
|
||||
case d_src_color:
|
||||
DSTBLEND_MAP( GL_SRC_COLOR, D3DBLEND_SRCCOLOR, D3DBLEND_ONE );
|
||||
break;
|
||||
case d_one_minus_src_color:
|
||||
DSTBLEND_MAP( GL_ONE_MINUS_SRC_COLOR, D3DBLEND_INVSRCCOLOR, D3DBLEND_ONE );
|
||||
break;
|
||||
case d_src_alpha:
|
||||
DSTBLEND_MAP( GL_SRC_ALPHA, D3DBLEND_SRCALPHA, D3DBLEND_ONE );
|
||||
break;
|
||||
case d_one_minus_src_alpha:
|
||||
DSTBLEND_MAP( GL_ONE_MINUS_SRC_ALPHA, D3DBLEND_INVSRCALPHA, D3DBLEND_ONE );
|
||||
break;
|
||||
case d_dst_alpha:
|
||||
DSTBLEND_MAP( GL_DST_ALPHA, D3DBLEND_DESTALPHA, D3DBLEND_ONE );
|
||||
break;
|
||||
case d_one_minus_dst_alpha:
|
||||
DSTBLEND_MAP( GL_ONE_MINUS_DST_ALPHA, D3DBLEND_INVDESTALPHA, D3DBLEND_ONE );
|
||||
break;
|
||||
case d_constant_color:
|
||||
DSTBLEND_MAP( GL_CONSTANT_COLOR, D3DBLEND_DESTCOLOR, D3DBLEND_ONE );
|
||||
break;
|
||||
case d_one_minus_constant_color:
|
||||
DSTBLEND_MAP( GL_ONE_MINUS_CONSTANT_COLOR, D3DBLEND_INVDESTCOLOR, D3DBLEND_ONE );
|
||||
break;
|
||||
case d_constant_alpha:
|
||||
DSTBLEND_MAP( GL_CONSTANT_ALPHAR, D3DBLEND_BOTHSRCALPHA, D3DBLEND_ONE );
|
||||
break;
|
||||
case d_one_minus_constant_alpha:
|
||||
DSTBLEND_MAP( GL_ONE_MINUS_CONSTANT_ALPHA, D3DBLEND_BOTHINVSRCALPHA, D3DBLEND_ONE );
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
/* Make the fallbacks for the texture functions. */
|
||||
for( index = 0; index < 4; index++ )
|
||||
{
|
||||
switch( index )
|
||||
{
|
||||
case d3dtblend_decal:
|
||||
if ( pHAL->D3DHWDevDesc.dpcTriCaps.dwTextureBlendCaps & D3DTBLEND_DECAL )
|
||||
{
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), "D3DTBLEND_DECAL -> D3DTBLEND_DECAL" ));
|
||||
pShared->dwTexFunc[index] = D3DTBLEND_DECAL;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( pHAL->D3DHWDevDesc.dpcTriCaps.dwTextureBlendCaps & D3DTBLEND_MODULATE )
|
||||
{
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), "D3DTBLEND_DECAL -> D3DTBLEND_MODULATE" ));
|
||||
pShared->dwTexFunc[index] = D3DTBLEND_MODULATE;
|
||||
}
|
||||
else
|
||||
{
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), "D3DTBLEND_DECAL -> D3DTBLEND_ADD" ));
|
||||
pShared->dwTexFunc[index] = D3DTBLEND_ADD;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case d3dtblend_decalalpha:
|
||||
if ( pHAL->D3DHWDevDesc.dpcTriCaps.dwTextureBlendCaps & D3DTBLEND_DECALALPHA )
|
||||
{
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), "D3DTBLEND_DECALALPHA -> D3DTBLEND_DECALALPHA" ));
|
||||
pShared->dwTexFunc[index] = D3DTBLEND_DECALALPHA;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( pHAL->D3DHWDevDesc.dpcTriCaps.dwTextureBlendCaps & D3DTBLEND_DECAL )
|
||||
{
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), "D3DTBLEND_DECALALPA -> D3DTBLEND_DECAL" ));
|
||||
pShared->dwTexFunc[index] = D3DTBLEND_DECAL;
|
||||
}
|
||||
else
|
||||
{
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), "D3DTBLEND_DECALALPHA -> D3DTBLEND_ADD" ));
|
||||
pShared->dwTexFunc[index] = D3DTBLEND_ADD;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case d3dtblend_modulate:
|
||||
if ( pHAL->D3DHWDevDesc.dpcTriCaps.dwTextureBlendCaps & D3DTBLEND_MODULATE )
|
||||
{
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), "D3DTBLEND_MODULATE -> D3DTBLEND_MODULATE" ));
|
||||
pShared->dwTexFunc[index] = D3DTBLEND_MODULATE;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( pHAL->D3DHWDevDesc.dpcTriCaps.dwTextureBlendCaps & D3DTBLEND_MODULATEALPHA )
|
||||
{
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), "D3DTBLEND_MODULATE -> D3DTBLEND_MODULATEALPHA" ));
|
||||
pShared->dwTexFunc[index] = D3DTBLEND_MODULATEALPHA;
|
||||
}
|
||||
else if ( pHAL->D3DHWDevDesc.dpcTriCaps.dwTextureBlendCaps & D3DTBLEND_DECAL )
|
||||
{
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), "D3DTBLEND_MODULATE -> D3DTBLEND_DECAL" ));
|
||||
pShared->dwTexFunc[index] = D3DTBLEND_DECAL;
|
||||
}
|
||||
else
|
||||
{
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), "D3DTBLEND_MODULATE -> D3DTBLEND_ADD" ));
|
||||
pShared->dwTexFunc[index] = D3DTBLEND_ADD;
|
||||
}
|
||||
}
|
||||
break;
|
||||
case d3dtblend_modulatealpha:
|
||||
if ( pHAL->D3DHWDevDesc.dpcTriCaps.dwTextureBlendCaps & D3DTBLEND_MODULATEALPHA )
|
||||
{
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), "D3DTBLEND_MODULATEALPHA -> D3DTBLEND_MODULATEALPHA" ));
|
||||
pShared->dwTexFunc[index] = D3DTBLEND_MODULATEALPHA;
|
||||
}
|
||||
else
|
||||
{
|
||||
if ( pHAL->D3DHWDevDesc.dpcTriCaps.dwTextureBlendCaps & D3DTBLEND_MODULATE )
|
||||
{
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), "D3DTBLEND_MODULATEALPHA -> D3DTBLEND_MODULATE" ));
|
||||
pShared->dwTexFunc[index] = D3DTBLEND_MODULATE;
|
||||
}
|
||||
else if ( pHAL->D3DHWDevDesc.dpcTriCaps.dwTextureBlendCaps & D3DTBLEND_DECAL )
|
||||
{
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), "D3DTBLEND_MODULATEALPHA -> D3DTBLEND_DECALE" ));
|
||||
pShared->dwTexFunc[index] = D3DTBLEND_DECAL;
|
||||
}
|
||||
else
|
||||
{
|
||||
DPF(( (DBG_CNTX_INFO|DBG_TXT_INFO), "D3DTBLEND_MODULATEALPHA -> D3DTBLEND_ADD" ));
|
||||
pShared->dwTexFunc[index] = D3DTBLEND_ADD;
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -1,68 +1,68 @@
|
|||
/*===========================================================================*/
|
||||
/* */
|
||||
/* Mesa-3.0 DirectX 6 Driver */
|
||||
/* */
|
||||
/* By Leigh McRae */
|
||||
/* */
|
||||
/* http://www.altsoftware.com/ */
|
||||
/* */
|
||||
/* Copyright (c) 1999-1998 alt.software inc. All Rights Reserved */
|
||||
/*===========================================================================*/
|
||||
#ifndef _D3D_HAL_INC
|
||||
#define _D3D_HAL_INC
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Includes. */
|
||||
/*===========================================================================*/
|
||||
#include <windows.h>
|
||||
#include <ddraw.h>
|
||||
#include <d3d.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include "D3DShared.h"
|
||||
#include "D3DTextureMgr.h"
|
||||
#include "Debug.h"
|
||||
/*===========================================================================*/
|
||||
/* Defines. */
|
||||
/*===========================================================================*/
|
||||
#define DX_RESTORE(ps) if ( (ps) && (ps)->IsLost() ) (ps)->Restore();
|
||||
/*===========================================================================*/
|
||||
/* Type defines. */
|
||||
/*===========================================================================*/
|
||||
typedef struct _d3d_hal_struct
|
||||
{
|
||||
MESAD3DSHARED shared;
|
||||
|
||||
GUID guid;
|
||||
LPDIRECTDRAW lpDD;
|
||||
LPDIRECTDRAW4 lpDD4;
|
||||
LPDIRECT3D3 lpD3D3;
|
||||
LPDIRECT3DDEVICE3 lpD3DDevice;
|
||||
D3DDEVICEDESC D3DHWDevDesc;
|
||||
LPDIRECTDRAWSURFACE4 lpDDSPrimary,
|
||||
lpDDSRender,
|
||||
lpDDSZbuffer;
|
||||
LPDIRECT3DVIEWPORT3 lpViewport;
|
||||
LPDIRECTDRAWCLIPPER lpClipper;
|
||||
DDPIXELFORMAT ddpf,
|
||||
ddpfZBuffer;
|
||||
PTM_OBJECT pTMList;
|
||||
|
||||
} MESAD3DHAL, *PMESAD3DHAL;
|
||||
/*===========================================================================*/
|
||||
/* External function prototypes. */
|
||||
/*===========================================================================*/
|
||||
extern BOOL InitTMgrHAL( PMESAD3DHAL pHAL );
|
||||
extern void TermTMgrHAL( PMESAD3DHAL pHAL );
|
||||
extern void AlphaBlendTableHAL( PMESAD3DHAL pHAL );
|
||||
|
||||
extern void Solve8BitChannelPixelFormat( DDPIXELFORMAT *pddpf, PPIXELINFO pPixel );
|
||||
extern char *ErrorStringD3D( HRESULT hr );
|
||||
extern void FatalShutDown( PMESAD3DHAL pHAL );
|
||||
/*===========================================================================*/
|
||||
/* Global variables. */
|
||||
/*===========================================================================*/
|
||||
extern char *errorMsg;
|
||||
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* */
|
||||
/* Mesa-3.0 DirectX 6 Driver */
|
||||
/* */
|
||||
/* By Leigh McRae */
|
||||
/* */
|
||||
/* http://www.altsoftware.com/ */
|
||||
/* */
|
||||
/* Copyright (c) 1999-1998 alt.software inc. All Rights Reserved */
|
||||
/*===========================================================================*/
|
||||
#ifndef _D3D_HAL_INC
|
||||
#define _D3D_HAL_INC
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Includes. */
|
||||
/*===========================================================================*/
|
||||
#include <windows.h>
|
||||
#include <ddraw.h>
|
||||
#include <d3d.h>
|
||||
#include <stdlib.h>
|
||||
#include <time.h>
|
||||
#include "D3DShared.h"
|
||||
#include "D3DTextureMgr.h"
|
||||
#include "Debug.h"
|
||||
/*===========================================================================*/
|
||||
/* Defines. */
|
||||
/*===========================================================================*/
|
||||
#define DX_RESTORE(ps) if ( (ps) && (ps)->IsLost() ) (ps)->Restore();
|
||||
/*===========================================================================*/
|
||||
/* Type defines. */
|
||||
/*===========================================================================*/
|
||||
typedef struct _d3d_hal_struct
|
||||
{
|
||||
MESAD3DSHARED shared;
|
||||
|
||||
GUID guid;
|
||||
LPDIRECTDRAW lpDD;
|
||||
LPDIRECTDRAW4 lpDD4;
|
||||
LPDIRECT3D3 lpD3D3;
|
||||
LPDIRECT3DDEVICE3 lpD3DDevice;
|
||||
D3DDEVICEDESC D3DHWDevDesc;
|
||||
LPDIRECTDRAWSURFACE4 lpDDSPrimary,
|
||||
lpDDSRender,
|
||||
lpDDSZbuffer;
|
||||
LPDIRECT3DVIEWPORT3 lpViewport;
|
||||
LPDIRECTDRAWCLIPPER lpClipper;
|
||||
DDPIXELFORMAT ddpf,
|
||||
ddpfZBuffer;
|
||||
PTM_OBJECT pTMList;
|
||||
|
||||
} MESAD3DHAL, *PMESAD3DHAL;
|
||||
/*===========================================================================*/
|
||||
/* External function prototypes. */
|
||||
/*===========================================================================*/
|
||||
extern BOOL InitTMgrHAL( PMESAD3DHAL pHAL );
|
||||
extern void TermTMgrHAL( PMESAD3DHAL pHAL );
|
||||
extern void AlphaBlendTableHAL( PMESAD3DHAL pHAL );
|
||||
|
||||
extern void Solve8BitChannelPixelFormat( DDPIXELFORMAT *pddpf, PPIXELINFO pPixel );
|
||||
extern char *ErrorStringD3D( HRESULT hr );
|
||||
extern void FatalShutDown( PMESAD3DHAL pHAL );
|
||||
/*===========================================================================*/
|
||||
/* Global variables. */
|
||||
/*===========================================================================*/
|
||||
extern char *errorMsg;
|
||||
|
||||
#endif
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,84 +1,84 @@
|
|||
/*===========================================================================*/
|
||||
/* */
|
||||
/* Mesa-3.0 DirectX 6 Driver */
|
||||
/* */
|
||||
/* By Leigh McRae */
|
||||
/* */
|
||||
/* http://www.altsoftware.com/ */
|
||||
/* */
|
||||
/* Copyright (c) 1999-1998 alt.software inc. All Rights Reserved */
|
||||
/*===========================================================================*/
|
||||
#ifndef D3D_MESA_H
|
||||
#define D3D_MESA_H
|
||||
/*===========================================================================*/
|
||||
/* Includes. */
|
||||
/*===========================================================================*/
|
||||
#include <windows.h>
|
||||
#include <ddraw.h>
|
||||
#include <d3d.h>
|
||||
#include "matrix.h"
|
||||
#include "context.h"
|
||||
/*===========================================================================*/
|
||||
/* */
|
||||
/* Mesa-3.0 DirectX 6 Driver */
|
||||
/* */
|
||||
/* By Leigh McRae */
|
||||
/* */
|
||||
/* http://www.altsoftware.com/ */
|
||||
/* */
|
||||
/* Copyright (c) 1999-1998 alt.software inc. All Rights Reserved */
|
||||
/*===========================================================================*/
|
||||
#ifndef D3D_MESA_H
|
||||
#define D3D_MESA_H
|
||||
/*===========================================================================*/
|
||||
/* Includes. */
|
||||
/*===========================================================================*/
|
||||
#include <windows.h>
|
||||
#include <ddraw.h>
|
||||
#include <d3d.h>
|
||||
#include "matrix.h"
|
||||
#include "context.h"
|
||||
#include "mtypes.h"
|
||||
#include "vb.h"
|
||||
#include "D3DShared.h"
|
||||
#include "Debug.h"
|
||||
#include "NULLProcs.h"
|
||||
/*===========================================================================*/
|
||||
/* Macros. */
|
||||
/*===========================================================================*/
|
||||
#define FLIP(h,y) (h-y)
|
||||
/*===========================================================================*/
|
||||
/* Magic numbers. */
|
||||
/*===========================================================================*/
|
||||
/*===========================================================================*/
|
||||
/* Type defines. */
|
||||
/*===========================================================================*/
|
||||
struct __extensions__
|
||||
{
|
||||
PROC proc;
|
||||
char *name;
|
||||
};
|
||||
|
||||
typedef GLbitfield (*ClearPROC)( GLcontext *ctx, GLbitfield mask, GLboolean all, GLint x, GLint y, GLint width, GLint height );
|
||||
typedef void (*WSpanRGBPROC)( const GLcontext* ctx, GLuint n, GLint x, GLint y, const GLubyte rgb[][3], const GLubyte mask[] );
|
||||
typedef void (*WSpanRGBAPROC)( const GLcontext* ctx, GLuint n, GLint x, GLint y, const GLubyte rgba[][4], const GLubyte mask[] );
|
||||
typedef void (*WSpanRGBAMonoPROC)( const GLcontext* ctx, GLuint n, GLint x, GLint y, const GLubyte mask[] );
|
||||
typedef void (*WPixelsRGBAPROC)( const GLcontext* ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte rgba[][4], const GLubyte mask[] );
|
||||
typedef void (*WPixelsRGBAMonoPROC)( const GLcontext* ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte mask[] );
|
||||
typedef void (*RSpanRGBAPROC)( const GLcontext* ctx, GLuint n, GLint x, GLint y, GLubyte rgba[][4] );
|
||||
typedef void (*RPixelsRGBAPROC)( const GLcontext* ctx, GLuint n, const GLint x[], const GLint y[], GLubyte rgba[][4], const GLubyte mask[] );
|
||||
|
||||
typedef struct D3D_mesa_context
|
||||
{
|
||||
PMESAD3DSHARED pShared;
|
||||
|
||||
GLcontext *gl_ctx; /* The core GL/Mesa context */
|
||||
GLvisual *gl_visual; /* Describes the buffers */
|
||||
GLframebuffer *gl_buffer; /* Depth, stencil, accum, etc buffers */
|
||||
|
||||
HDC hdc;
|
||||
WNDPROC hOldProc;
|
||||
|
||||
UCHAR rClear, /* Current clear colors. */
|
||||
gClear,
|
||||
bClear,
|
||||
aClear,
|
||||
rCurrent, /* Current rendering colors. */
|
||||
gCurrent,
|
||||
bCurrent,
|
||||
aCurrent;
|
||||
|
||||
struct D3D_mesa_context *next;
|
||||
|
||||
} D3DMESACONTEXT, *PD3DMESACONTEXT;
|
||||
/*===========================================================================*/
|
||||
/* Extern function prototypes. */
|
||||
/*===========================================================================*/
|
||||
extern void gl_Viewport( GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height );
|
||||
/*===========================================================================*/
|
||||
/* Global variables. */
|
||||
/*===========================================================================*/
|
||||
extern D3DTLVERTEX D3DTLVertices[(VB_MAX*6)];
|
||||
|
||||
#endif
|
||||
|
||||
#include "vb.h"
|
||||
#include "D3DShared.h"
|
||||
#include "Debug.h"
|
||||
#include "NULLProcs.h"
|
||||
/*===========================================================================*/
|
||||
/* Macros. */
|
||||
/*===========================================================================*/
|
||||
#define FLIP(h,y) (h-y)
|
||||
/*===========================================================================*/
|
||||
/* Magic numbers. */
|
||||
/*===========================================================================*/
|
||||
/*===========================================================================*/
|
||||
/* Type defines. */
|
||||
/*===========================================================================*/
|
||||
struct __extensions__
|
||||
{
|
||||
PROC proc;
|
||||
char *name;
|
||||
};
|
||||
|
||||
typedef GLbitfield (*ClearPROC)( GLcontext *ctx, GLbitfield mask, GLboolean all, GLint x, GLint y, GLint width, GLint height );
|
||||
typedef void (*WSpanRGBPROC)( const GLcontext* ctx, GLuint n, GLint x, GLint y, const GLubyte rgb[][3], const GLubyte mask[] );
|
||||
typedef void (*WSpanRGBAPROC)( const GLcontext* ctx, GLuint n, GLint x, GLint y, const GLubyte rgba[][4], const GLubyte mask[] );
|
||||
typedef void (*WSpanRGBAMonoPROC)( const GLcontext* ctx, GLuint n, GLint x, GLint y, const GLubyte mask[] );
|
||||
typedef void (*WPixelsRGBAPROC)( const GLcontext* ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte rgba[][4], const GLubyte mask[] );
|
||||
typedef void (*WPixelsRGBAMonoPROC)( const GLcontext* ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte mask[] );
|
||||
typedef void (*RSpanRGBAPROC)( const GLcontext* ctx, GLuint n, GLint x, GLint y, GLubyte rgba[][4] );
|
||||
typedef void (*RPixelsRGBAPROC)( const GLcontext* ctx, GLuint n, const GLint x[], const GLint y[], GLubyte rgba[][4], const GLubyte mask[] );
|
||||
|
||||
typedef struct D3D_mesa_context
|
||||
{
|
||||
PMESAD3DSHARED pShared;
|
||||
|
||||
GLcontext *gl_ctx; /* The core GL/Mesa context */
|
||||
GLvisual *gl_visual; /* Describes the buffers */
|
||||
GLframebuffer *gl_buffer; /* Depth, stencil, accum, etc buffers */
|
||||
|
||||
HDC hdc;
|
||||
WNDPROC hOldProc;
|
||||
|
||||
UCHAR rClear, /* Current clear colors. */
|
||||
gClear,
|
||||
bClear,
|
||||
aClear,
|
||||
rCurrent, /* Current rendering colors. */
|
||||
gCurrent,
|
||||
bCurrent,
|
||||
aCurrent;
|
||||
|
||||
struct D3D_mesa_context *next;
|
||||
|
||||
} D3DMESACONTEXT, *PD3DMESACONTEXT;
|
||||
/*===========================================================================*/
|
||||
/* Extern function prototypes. */
|
||||
/*===========================================================================*/
|
||||
extern void gl_Viewport( GLcontext *ctx, GLint x, GLint y, GLsizei width, GLsizei height );
|
||||
/*===========================================================================*/
|
||||
/* Global variables. */
|
||||
/*===========================================================================*/
|
||||
extern D3DTLVERTEX D3DTLVertices[(VB_MAX*6)];
|
||||
|
||||
#endif
|
||||
|
||||
|
|
|
@ -1,213 +1,213 @@
|
|||
/*===========================================================================*/
|
||||
/* */
|
||||
/* Mesa-3.0 DirectX 6 Driver */
|
||||
/* */
|
||||
/* By Leigh McRae */
|
||||
/* */
|
||||
/* http://www.altsoftware.com/ */
|
||||
/* */
|
||||
/* Copyright (c) 1999-1998 alt.software inc. All Rights Reserved */
|
||||
/*===========================================================================*/
|
||||
#include "D3DHAL.h"
|
||||
/*===========================================================================*/
|
||||
/* This function clears the context bound to the supplied shared context. */
|
||||
/* The function takes the D3D flags D3DCLEAR_TARGET, D3DCLEAR_STENCIL and */
|
||||
/* D3DCLEAR_ZBUFFER. Set bAll to TRUE for a full clear else supply the coord*/
|
||||
/* of the rect to be cleared relative to the window. The color is always a */
|
||||
/* 32bit value (RGBA). Fill in the z-value and stencil if needed. */
|
||||
/* */
|
||||
/* TODO: this can be redone to be called by Mesa directly. */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
extern "C" void ClearHAL( PMESAD3DSHARED pShared, DWORD dwFlags, BOOL bAll, int x, int y, int cx, int cy, DWORD dwColor, float zv, DWORD dwStencil )
|
||||
{
|
||||
PMESAD3DHAL pHAL = (PMESAD3DHAL)pShared;
|
||||
D3DRECT d3dRect;
|
||||
|
||||
#ifdef D3D_DEBUG
|
||||
HRESULT rc;
|
||||
|
||||
DPF(( DBG_FUNC, "CleaHAL();" ));
|
||||
|
||||
/* Make sure we have enough info. */
|
||||
if ( (pHAL == NULL) || (pHAL->lpViewport == NULL) )
|
||||
return;
|
||||
#endif
|
||||
|
||||
if ( bAll )
|
||||
{
|
||||
/* I assume my viewport is valid. */
|
||||
d3dRect.lX1 = pShared->rectV.left;
|
||||
d3dRect.lY1 = pShared->rectV.top;
|
||||
d3dRect.lX2 = pShared->rectV.right;
|
||||
d3dRect.lY2 = pShared->rectV.bottom;
|
||||
}
|
||||
else
|
||||
{
|
||||
d3dRect.lX1 = pShared->rectV.left + x;
|
||||
d3dRect.lY1 = pShared->rectV.top + y;
|
||||
d3dRect.lX2 = d3dRect.lX1 + cx;
|
||||
d3dRect.lY2 = d3dRect.lY1 + cy;
|
||||
}
|
||||
|
||||
#ifdef D3D_DEBUG
|
||||
rc = pHAL->lpViewport->Clear2( 1, &d3dRect, dwFlags, dwColor, zv, dwStencil );
|
||||
if ( FAILED(rc) )
|
||||
{
|
||||
RIP( pHAL, "Clear2 ->", ErrorStringD3D(rc) );
|
||||
}
|
||||
#else
|
||||
pHAL->lpViewport->Clear2( 1, &d3dRect, dwFlags, dwColor, zv, dwStencil );
|
||||
#endif
|
||||
}
|
||||
/*===========================================================================*/
|
||||
/* Well this is the guts of it all. Here we rasterize the primitives that */
|
||||
/* are in their final form. OpenGL has done all the lighting, transfomations*/
|
||||
/* and clipping at this point. */
|
||||
/* */
|
||||
/* TODO: I'm not sure if I want to bother to check for errors on this call. */
|
||||
/* The overhead kills me... */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
extern "C" void DrawPrimitiveHAL( PMESAD3DSHARED pShared, D3DPRIMITIVETYPE dptPrimitiveType, D3DTLVERTEX *pVertices, DWORD dwCount )
|
||||
{
|
||||
PMESAD3DHAL pHAL = (PMESAD3DHAL)pShared;
|
||||
|
||||
#ifdef D3D_DEBUG
|
||||
HRESULT rc;
|
||||
|
||||
DPF(( DBG_FUNC, "DrawPrimitveHAL();" ));
|
||||
|
||||
/* Make sure we have enough info. */
|
||||
if ( (pHAL == NULL) || (pHAL->lpD3DDevice == NULL) )
|
||||
return;
|
||||
|
||||
DPF(( DBG_PRIM_INFO, "DP( %d )", dwCount ));
|
||||
|
||||
rc = pHAL->lpD3DDevice->DrawPrimitive( dptPrimitiveType,
|
||||
D3DFVF_TLVERTEX,
|
||||
(LPVOID)pVertices,
|
||||
dwCount,
|
||||
(D3DDP_DONOTCLIP | D3DDP_DONOTLIGHT) );
|
||||
if ( FAILED(rc) )
|
||||
{
|
||||
RIP( pHAL, "DrawPrimitive ->", ErrorStringD3D(rc) );
|
||||
}
|
||||
#else
|
||||
pHAL->lpD3DDevice->DrawPrimitive( dptPrimitiveType,
|
||||
D3DFVF_TLVERTEX,
|
||||
(LPVOID)pVertices,
|
||||
dwCount,
|
||||
(D3DDP_DONOTCLIP | D3DDP_DONOTLIGHT) );
|
||||
#endif
|
||||
}
|
||||
/*===========================================================================*/
|
||||
/* This call will handle the swapping of the buffers. Now I didn't bother */
|
||||
/* to support single buffered so this will be used for glFlush() as its all */
|
||||
/* the same. So first we do an EndScene as we are always considered to be in*/
|
||||
/* a BeginScene because when we leave we do a BeginScene. Now note that when*/
|
||||
/* the context is created in the first place we do a BeginScene also just to */
|
||||
/* get things going. The call will use either Flip/blt based on the type of */
|
||||
/* surface was created for rendering. */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
extern "C" void SwapBuffersHAL( PMESAD3DSHARED pShared )
|
||||
{
|
||||
PMESAD3DHAL pHAL = (PMESAD3DHAL)pShared;
|
||||
|
||||
#ifdef D3D_DEBUG
|
||||
HRESULT rc;
|
||||
|
||||
DPF(( DBG_FUNC, "SwapBuffersHAL();" ));
|
||||
DPF(( DBG_ALL_PROFILE, "=================SWAP===================" ));
|
||||
|
||||
/* Make sure we have enough info. */
|
||||
if ( (pHAL == NULL) || (pHAL->lpD3DDevice == NULL) )
|
||||
return;
|
||||
|
||||
/* Make sure we have enough info. */
|
||||
if ( pHAL->lpDDSPrimary != NULL )
|
||||
{
|
||||
rc = pHAL->lpD3DDevice->EndScene();
|
||||
if ( FAILED(rc) )
|
||||
{
|
||||
RIP( pHAL, "EndScene ->", ErrorStringD3D(rc) );
|
||||
}
|
||||
|
||||
if ( pShared->bFlipable )
|
||||
{
|
||||
DPF(( DBG_CNTX_PROFILE, "Swap->FLIP" ));
|
||||
rc = pHAL->lpDDSPrimary->Flip( NULL, DDFLIP_WAIT );
|
||||
}
|
||||
else
|
||||
{
|
||||
DPF(( DBG_CNTX_PROFILE, "Swap->Blt" ));
|
||||
rc = pHAL->lpDDSPrimary->Blt( &pShared->rectW, pHAL->lpDDSRender, NULL, DDBLT_WAIT, NULL );
|
||||
}
|
||||
if ( FAILED(rc) )
|
||||
{
|
||||
RIP( pHAL, "Blt (RENDER/PRIMARY) ->", ErrorStringD3D(rc) );
|
||||
}
|
||||
|
||||
rc = pHAL->lpD3DDevice->BeginScene();
|
||||
if ( FAILED(rc) )
|
||||
{
|
||||
RIP( pHAL, "BeginScene ->", ErrorStringD3D(rc) );
|
||||
}
|
||||
}
|
||||
#else
|
||||
pHAL->lpD3DDevice->EndScene();
|
||||
|
||||
if ( pShared->bFlipable )
|
||||
pHAL->lpDDSPrimary->Flip( NULL, DDFLIP_WAIT );
|
||||
else
|
||||
pHAL->lpDDSPrimary->Blt( &pShared->rectW, pHAL->lpDDSRender, NULL, DDBLT_WAIT, NULL );
|
||||
|
||||
pHAL->lpD3DDevice->BeginScene();
|
||||
|
||||
#endif
|
||||
}
|
||||
/*===========================================================================*/
|
||||
/* This function is a very thin wrapper for the D3D call 'SetRenderState'. */
|
||||
/* Using this function requires all the types to be defined by including the */
|
||||
/* D3D header file. */
|
||||
/* */
|
||||
/* TODO: would be much better to get ride of all these calls per VBRender. */
|
||||
/* I feel I should get this call into SetRenderStates() the RenderVB. */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
extern "C" void SetStateHAL( PMESAD3DSHARED pShared, DWORD dwType, DWORD dwState )
|
||||
{
|
||||
PMESAD3DHAL pHAL = (PMESAD3DHAL)pShared;
|
||||
|
||||
#ifdef D3D_DEBUG
|
||||
HRESULT rc;
|
||||
|
||||
DPF(( DBG_FUNC, "SetStateHAL();" ));
|
||||
|
||||
/* Make sure we have enough info. */
|
||||
if ( (pHAL == NULL) || (pHAL->lpD3DDevice == NULL) )
|
||||
return;
|
||||
|
||||
rc = pHAL->lpD3DDevice->SetRenderState( (D3DRENDERSTATETYPE)dwType, dwState );
|
||||
if ( FAILED(rc) )
|
||||
{
|
||||
RIP( pHAL, "SetRenderState ->", ErrorStringD3D(rc) );
|
||||
}
|
||||
|
||||
#else
|
||||
pHAL->lpD3DDevice->SetRenderState( (D3DRENDERSTATETYPE)dwType, dwState );
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*===========================================================================*/
|
||||
/* */
|
||||
/* Mesa-3.0 DirectX 6 Driver */
|
||||
/* */
|
||||
/* By Leigh McRae */
|
||||
/* */
|
||||
/* http://www.altsoftware.com/ */
|
||||
/* */
|
||||
/* Copyright (c) 1999-1998 alt.software inc. All Rights Reserved */
|
||||
/*===========================================================================*/
|
||||
#include "D3DHAL.h"
|
||||
/*===========================================================================*/
|
||||
/* This function clears the context bound to the supplied shared context. */
|
||||
/* The function takes the D3D flags D3DCLEAR_TARGET, D3DCLEAR_STENCIL and */
|
||||
/* D3DCLEAR_ZBUFFER. Set bAll to TRUE for a full clear else supply the coord*/
|
||||
/* of the rect to be cleared relative to the window. The color is always a */
|
||||
/* 32bit value (RGBA). Fill in the z-value and stencil if needed. */
|
||||
/* */
|
||||
/* TODO: this can be redone to be called by Mesa directly. */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
extern "C" void ClearHAL( PMESAD3DSHARED pShared, DWORD dwFlags, BOOL bAll, int x, int y, int cx, int cy, DWORD dwColor, float zv, DWORD dwStencil )
|
||||
{
|
||||
PMESAD3DHAL pHAL = (PMESAD3DHAL)pShared;
|
||||
D3DRECT d3dRect;
|
||||
|
||||
#ifdef D3D_DEBUG
|
||||
HRESULT rc;
|
||||
|
||||
DPF(( DBG_FUNC, "CleaHAL();" ));
|
||||
|
||||
/* Make sure we have enough info. */
|
||||
if ( (pHAL == NULL) || (pHAL->lpViewport == NULL) )
|
||||
return;
|
||||
#endif
|
||||
|
||||
if ( bAll )
|
||||
{
|
||||
/* I assume my viewport is valid. */
|
||||
d3dRect.lX1 = pShared->rectV.left;
|
||||
d3dRect.lY1 = pShared->rectV.top;
|
||||
d3dRect.lX2 = pShared->rectV.right;
|
||||
d3dRect.lY2 = pShared->rectV.bottom;
|
||||
}
|
||||
else
|
||||
{
|
||||
d3dRect.lX1 = pShared->rectV.left + x;
|
||||
d3dRect.lY1 = pShared->rectV.top + y;
|
||||
d3dRect.lX2 = d3dRect.lX1 + cx;
|
||||
d3dRect.lY2 = d3dRect.lY1 + cy;
|
||||
}
|
||||
|
||||
#ifdef D3D_DEBUG
|
||||
rc = pHAL->lpViewport->Clear2( 1, &d3dRect, dwFlags, dwColor, zv, dwStencil );
|
||||
if ( FAILED(rc) )
|
||||
{
|
||||
RIP( pHAL, "Clear2 ->", ErrorStringD3D(rc) );
|
||||
}
|
||||
#else
|
||||
pHAL->lpViewport->Clear2( 1, &d3dRect, dwFlags, dwColor, zv, dwStencil );
|
||||
#endif
|
||||
}
|
||||
/*===========================================================================*/
|
||||
/* Well this is the guts of it all. Here we rasterize the primitives that */
|
||||
/* are in their final form. OpenGL has done all the lighting, transfomations*/
|
||||
/* and clipping at this point. */
|
||||
/* */
|
||||
/* TODO: I'm not sure if I want to bother to check for errors on this call. */
|
||||
/* The overhead kills me... */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
extern "C" void DrawPrimitiveHAL( PMESAD3DSHARED pShared, D3DPRIMITIVETYPE dptPrimitiveType, D3DTLVERTEX *pVertices, DWORD dwCount )
|
||||
{
|
||||
PMESAD3DHAL pHAL = (PMESAD3DHAL)pShared;
|
||||
|
||||
#ifdef D3D_DEBUG
|
||||
HRESULT rc;
|
||||
|
||||
DPF(( DBG_FUNC, "DrawPrimitveHAL();" ));
|
||||
|
||||
/* Make sure we have enough info. */
|
||||
if ( (pHAL == NULL) || (pHAL->lpD3DDevice == NULL) )
|
||||
return;
|
||||
|
||||
DPF(( DBG_PRIM_INFO, "DP( %d )", dwCount ));
|
||||
|
||||
rc = pHAL->lpD3DDevice->DrawPrimitive( dptPrimitiveType,
|
||||
D3DFVF_TLVERTEX,
|
||||
(LPVOID)pVertices,
|
||||
dwCount,
|
||||
(D3DDP_DONOTCLIP | D3DDP_DONOTLIGHT) );
|
||||
if ( FAILED(rc) )
|
||||
{
|
||||
RIP( pHAL, "DrawPrimitive ->", ErrorStringD3D(rc) );
|
||||
}
|
||||
#else
|
||||
pHAL->lpD3DDevice->DrawPrimitive( dptPrimitiveType,
|
||||
D3DFVF_TLVERTEX,
|
||||
(LPVOID)pVertices,
|
||||
dwCount,
|
||||
(D3DDP_DONOTCLIP | D3DDP_DONOTLIGHT) );
|
||||
#endif
|
||||
}
|
||||
/*===========================================================================*/
|
||||
/* This call will handle the swapping of the buffers. Now I didn't bother */
|
||||
/* to support single buffered so this will be used for glFlush() as its all */
|
||||
/* the same. So first we do an EndScene as we are always considered to be in*/
|
||||
/* a BeginScene because when we leave we do a BeginScene. Now note that when*/
|
||||
/* the context is created in the first place we do a BeginScene also just to */
|
||||
/* get things going. The call will use either Flip/blt based on the type of */
|
||||
/* surface was created for rendering. */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
extern "C" void SwapBuffersHAL( PMESAD3DSHARED pShared )
|
||||
{
|
||||
PMESAD3DHAL pHAL = (PMESAD3DHAL)pShared;
|
||||
|
||||
#ifdef D3D_DEBUG
|
||||
HRESULT rc;
|
||||
|
||||
DPF(( DBG_FUNC, "SwapBuffersHAL();" ));
|
||||
DPF(( DBG_ALL_PROFILE, "=================SWAP===================" ));
|
||||
|
||||
/* Make sure we have enough info. */
|
||||
if ( (pHAL == NULL) || (pHAL->lpD3DDevice == NULL) )
|
||||
return;
|
||||
|
||||
/* Make sure we have enough info. */
|
||||
if ( pHAL->lpDDSPrimary != NULL )
|
||||
{
|
||||
rc = pHAL->lpD3DDevice->EndScene();
|
||||
if ( FAILED(rc) )
|
||||
{
|
||||
RIP( pHAL, "EndScene ->", ErrorStringD3D(rc) );
|
||||
}
|
||||
|
||||
if ( pShared->bFlipable )
|
||||
{
|
||||
DPF(( DBG_CNTX_PROFILE, "Swap->FLIP" ));
|
||||
rc = pHAL->lpDDSPrimary->Flip( NULL, DDFLIP_WAIT );
|
||||
}
|
||||
else
|
||||
{
|
||||
DPF(( DBG_CNTX_PROFILE, "Swap->Blt" ));
|
||||
rc = pHAL->lpDDSPrimary->Blt( &pShared->rectW, pHAL->lpDDSRender, NULL, DDBLT_WAIT, NULL );
|
||||
}
|
||||
if ( FAILED(rc) )
|
||||
{
|
||||
RIP( pHAL, "Blt (RENDER/PRIMARY) ->", ErrorStringD3D(rc) );
|
||||
}
|
||||
|
||||
rc = pHAL->lpD3DDevice->BeginScene();
|
||||
if ( FAILED(rc) )
|
||||
{
|
||||
RIP( pHAL, "BeginScene ->", ErrorStringD3D(rc) );
|
||||
}
|
||||
}
|
||||
#else
|
||||
pHAL->lpD3DDevice->EndScene();
|
||||
|
||||
if ( pShared->bFlipable )
|
||||
pHAL->lpDDSPrimary->Flip( NULL, DDFLIP_WAIT );
|
||||
else
|
||||
pHAL->lpDDSPrimary->Blt( &pShared->rectW, pHAL->lpDDSRender, NULL, DDBLT_WAIT, NULL );
|
||||
|
||||
pHAL->lpD3DDevice->BeginScene();
|
||||
|
||||
#endif
|
||||
}
|
||||
/*===========================================================================*/
|
||||
/* This function is a very thin wrapper for the D3D call 'SetRenderState'. */
|
||||
/* Using this function requires all the types to be defined by including the */
|
||||
/* D3D header file. */
|
||||
/* */
|
||||
/* TODO: would be much better to get ride of all these calls per VBRender. */
|
||||
/* I feel I should get this call into SetRenderStates() the RenderVB. */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
extern "C" void SetStateHAL( PMESAD3DSHARED pShared, DWORD dwType, DWORD dwState )
|
||||
{
|
||||
PMESAD3DHAL pHAL = (PMESAD3DHAL)pShared;
|
||||
|
||||
#ifdef D3D_DEBUG
|
||||
HRESULT rc;
|
||||
|
||||
DPF(( DBG_FUNC, "SetStateHAL();" ));
|
||||
|
||||
/* Make sure we have enough info. */
|
||||
if ( (pHAL == NULL) || (pHAL->lpD3DDevice == NULL) )
|
||||
return;
|
||||
|
||||
rc = pHAL->lpD3DDevice->SetRenderState( (D3DRENDERSTATETYPE)dwType, dwState );
|
||||
if ( FAILED(rc) )
|
||||
{
|
||||
RIP( pHAL, "SetRenderState ->", ErrorStringD3D(rc) );
|
||||
}
|
||||
|
||||
#else
|
||||
pHAL->lpD3DDevice->SetRenderState( (D3DRENDERSTATETYPE)dwType, dwState );
|
||||
#endif
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -1,62 +1,62 @@
|
|||
/*===========================================================================*/
|
||||
/* */
|
||||
/* Mesa-3.0 DirectX 6 Driver */
|
||||
/* */
|
||||
/* By Leigh McRae */
|
||||
/* */
|
||||
/* http://www.altsoftware.com/ */
|
||||
/* */
|
||||
/* Copyright (c) 1999-1998 alt.software inc. All Rights Reserved */
|
||||
/*===========================================================================*/
|
||||
#ifndef _TEXTURE_MGR_INC
|
||||
#define _TEXTURE_MGR_INC
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Includes. */
|
||||
/*===========================================================================*/
|
||||
#include <windows.h>
|
||||
#include <ddraw.h>
|
||||
#include <d3d.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdlib.h>
|
||||
#include "GL/gl.h"
|
||||
/*========================================================================*/
|
||||
/* Defines. */
|
||||
/*========================================================================*/
|
||||
/*========================================================================*/
|
||||
/* Type defines. */
|
||||
/*========================================================================*/
|
||||
typedef struct _local_texture_object
|
||||
{
|
||||
DWORD dwName,
|
||||
dwPriority,
|
||||
dwFlags,
|
||||
dwSWidth,
|
||||
dwSHeight,
|
||||
dwVWidth,
|
||||
dwVHeight;
|
||||
BOOL bLock,
|
||||
bDirty; /* I only update VID on SubImage calls so the system */
|
||||
/* texture can get invalid. */
|
||||
|
||||
LPDIRECT3DDEVICE3 lpD3DDevice; /* If the device changes we must get new handles... */
|
||||
LPDIRECTDRAWSURFACE4 lpDDS_System,
|
||||
lpDDS_Video;
|
||||
LPDIRECT3DTEXTURE2 lpD3DTexture2;
|
||||
|
||||
PIXELINFO pixel;
|
||||
|
||||
struct _local_texture_object *next;
|
||||
struct _local_texture_object *prev;
|
||||
|
||||
} TM_OBJECT, *PTM_OBJECT;
|
||||
/*========================================================================*/
|
||||
/* Function prototypes. */
|
||||
/*========================================================================*/
|
||||
void APIENTRY InitTMD3D( void *pVoid );
|
||||
void APIENTRY TermTMD3D( void *pVoid );
|
||||
/*========================================================================*/
|
||||
/* Global variables declaration. */
|
||||
/*========================================================================*/
|
||||
|
||||
#endif
|
||||
/*===========================================================================*/
|
||||
/* */
|
||||
/* Mesa-3.0 DirectX 6 Driver */
|
||||
/* */
|
||||
/* By Leigh McRae */
|
||||
/* */
|
||||
/* http://www.altsoftware.com/ */
|
||||
/* */
|
||||
/* Copyright (c) 1999-1998 alt.software inc. All Rights Reserved */
|
||||
/*===========================================================================*/
|
||||
#ifndef _TEXTURE_MGR_INC
|
||||
#define _TEXTURE_MGR_INC
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Includes. */
|
||||
/*===========================================================================*/
|
||||
#include <windows.h>
|
||||
#include <ddraw.h>
|
||||
#include <d3d.h>
|
||||
#include <stdlib.h>
|
||||
#include <stdlib.h>
|
||||
#include "GL/gl.h"
|
||||
/*========================================================================*/
|
||||
/* Defines. */
|
||||
/*========================================================================*/
|
||||
/*========================================================================*/
|
||||
/* Type defines. */
|
||||
/*========================================================================*/
|
||||
typedef struct _local_texture_object
|
||||
{
|
||||
DWORD dwName,
|
||||
dwPriority,
|
||||
dwFlags,
|
||||
dwSWidth,
|
||||
dwSHeight,
|
||||
dwVWidth,
|
||||
dwVHeight;
|
||||
BOOL bLock,
|
||||
bDirty; /* I only update VID on SubImage calls so the system */
|
||||
/* texture can get invalid. */
|
||||
|
||||
LPDIRECT3DDEVICE3 lpD3DDevice; /* If the device changes we must get new handles... */
|
||||
LPDIRECTDRAWSURFACE4 lpDDS_System,
|
||||
lpDDS_Video;
|
||||
LPDIRECT3DTEXTURE2 lpD3DTexture2;
|
||||
|
||||
PIXELINFO pixel;
|
||||
|
||||
struct _local_texture_object *next;
|
||||
struct _local_texture_object *prev;
|
||||
|
||||
} TM_OBJECT, *PTM_OBJECT;
|
||||
/*========================================================================*/
|
||||
/* Function prototypes. */
|
||||
/*========================================================================*/
|
||||
void APIENTRY InitTMD3D( void *pVoid );
|
||||
void APIENTRY TermTMD3D( void *pVoid );
|
||||
/*========================================================================*/
|
||||
/* Global variables declaration. */
|
||||
/*========================================================================*/
|
||||
|
||||
#endif
|
||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -1,399 +1,399 @@
|
|||
/*===========================================================================*/
|
||||
/* */
|
||||
/* Mesa-3.0 DirectX 6 Driver */
|
||||
/* */
|
||||
/* By Leigh McRae */
|
||||
/* */
|
||||
/* http://www.altsoftware.com/ */
|
||||
/* */
|
||||
/* Copyright (c) 1999-1998 alt.software inc. All Rights Reserved */
|
||||
/*===========================================================================*/
|
||||
#include "D3DMesa.h"
|
||||
/*===========================================================================*/
|
||||
/* This call will clear the render surface using the pixel info built from */
|
||||
/* the surface at creation time. The call uses Lock/Unlock to access the */
|
||||
/* surface. The call also special cases a full clear or a dirty rectangle. */
|
||||
/* Finally the call returns the new clear mask that reflects that the color */
|
||||
/* buffer was cleared. */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: the original mask with the bits cleared that represents the buffer*/
|
||||
/* or buffers we just cleared. */
|
||||
/*===========================================================================*/
|
||||
GLbitfield ClearBuffers( GLcontext *ctx, GLbitfield mask, GLboolean all, GLint x, GLint y, GLint width, GLint height )
|
||||
{
|
||||
D3DMESACONTEXT *pContext = (D3DMESACONTEXT *)ctx->DriverCtx;
|
||||
DDSURFACEDESC2 *pddsd2;
|
||||
UCHAR *pBuffer,
|
||||
*pScanLine;
|
||||
int index,
|
||||
index2;
|
||||
DWORD dwColor;
|
||||
|
||||
if ( mask & GL_COLOR_BUFFER_BIT )
|
||||
{
|
||||
/* Lock the surface to get the surface pointer. */
|
||||
pddsd2 = LockHAL( pContext->pShared, TRUE );
|
||||
|
||||
/* Solve the color once only. */
|
||||
dwColor = ( ((DWORD)((float)pContext->rClear * pContext->pShared->pixel.rScale)) << pContext->pShared->pixel.rShift );
|
||||
dwColor |= ( ((DWORD)((float)pContext->gClear * pContext->pShared->pixel.gScale)) << pContext->pShared->pixel.gShift );
|
||||
dwColor |= ( ((DWORD)((float)pContext->bClear * pContext->pShared->pixel.bScale)) << pContext->pShared->pixel.bShift );
|
||||
|
||||
if ( all )
|
||||
{
|
||||
for( index = 0, pScanLine = (UCHAR *)pddsd2->lpSurface; index < pContext->pShared->dwHeight; index++, pScanLine += pddsd2->lPitch )
|
||||
for( pBuffer = pScanLine, index2 = 0; index2 < pContext->pShared->dwWidth; index2++, pBuffer += pContext->pShared->pixel.cb )
|
||||
memcpy( pBuffer, &dwColor, pContext->pShared->pixel.cb );
|
||||
}
|
||||
else
|
||||
{
|
||||
pScanLine = ((UCHAR *)pddsd2->lpSurface) +
|
||||
( (FLIP( pContext->pShared->dwHeight, (y+height)) * pddsd2->lPitch) + (x * pContext->pShared->pixel.cb) );
|
||||
|
||||
for( index = 0; index < height; index++, pScanLine += pddsd2->lPitch )
|
||||
{
|
||||
for( index2 = 0, pBuffer = pScanLine; index2 < width; index2++, pBuffer += pContext->pShared->pixel.cb )
|
||||
memcpy( pBuffer, &dwColor, pContext->pShared->pixel.cb );
|
||||
}
|
||||
}
|
||||
|
||||
UnlockHAL( pContext->pShared, TRUE );
|
||||
}
|
||||
|
||||
return (mask & ~GL_COLOR_BUFFER_BIT);
|
||||
}
|
||||
/*===========================================================================*/
|
||||
/* This proc (as all others) has been written for the general case. I use */
|
||||
/* the PIXELINFO structure to pack the pixel from RGB24 to whatever the Off- */
|
||||
/* Screen render surface uses. The alpha is ignored as Mesa does it in SW. */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
void WSpanRGB( const GLcontext* ctx, GLuint n, GLint x, GLint y, const GLubyte rgb[][3], const GLubyte mask[] )
|
||||
{
|
||||
D3DMESACONTEXT *pContext = (D3DMESACONTEXT *)ctx->DriverCtx;
|
||||
DDSURFACEDESC2 *pddsd2;
|
||||
UCHAR *pBuffer;
|
||||
int index;
|
||||
DWORD dwColor;
|
||||
|
||||
/* Get the surface pointer and the pitch. */
|
||||
pddsd2 = LockHAL( pContext->pShared, TRUE );
|
||||
|
||||
/* Find the start of the span. Invert y for Windows. */
|
||||
pBuffer = (UCHAR *)pddsd2->lpSurface + (FLIP(pContext->pShared->dwHeight,y) * pddsd2->lPitch) + (x*pContext->pShared->pixel.cb);
|
||||
|
||||
if ( mask )
|
||||
{
|
||||
for( index = 0; index < n; index++, pBuffer += pContext->pShared->pixel.cb )
|
||||
{
|
||||
if ( mask[index] )
|
||||
{
|
||||
/* Pack the color components. */
|
||||
dwColor = ( ((DWORD)((float)rgb[index][RCOMP] * pContext->pShared->pixel.rScale)) << pContext->pShared->pixel.rShift );
|
||||
dwColor |= ( ((DWORD)((float)rgb[index][GCOMP] * pContext->pShared->pixel.gScale)) << pContext->pShared->pixel.gShift );
|
||||
dwColor |= ( ((DWORD)((float)rgb[index][BCOMP] * pContext->pShared->pixel.bScale)) << pContext->pShared->pixel.bShift );
|
||||
memcpy( pBuffer, &dwColor, pContext->pShared->pixel.cb );
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for( index = 0; index < n; index++, pBuffer += pContext->pShared->pixel.cb )
|
||||
{
|
||||
/* Pack the color components. */
|
||||
dwColor = ( ((DWORD)((float)rgb[index][RCOMP] * pContext->pShared->pixel.rScale)) << pContext->pShared->pixel.rShift );
|
||||
dwColor |= ( ((DWORD)((float)rgb[index][GCOMP] * pContext->pShared->pixel.gScale)) << pContext->pShared->pixel.gShift );
|
||||
dwColor |= ( ((DWORD)((float)rgb[index][BCOMP] * pContext->pShared->pixel.bScale)) << pContext->pShared->pixel.bShift );
|
||||
memcpy( pBuffer, &dwColor, pContext->pShared->pixel.cb );
|
||||
}
|
||||
}
|
||||
|
||||
/* Giver back. */
|
||||
UnlockHAL( pContext->pShared, TRUE );
|
||||
}
|
||||
/*===========================================================================*/
|
||||
/* This proc (as all others) has been written for the general case. I use */
|
||||
/* the PIXELINFO structure to pack the pixel from RGB24 to whatever the Off- */
|
||||
/* Screen render surface uses. The alpha is ignored as Mesa does it in SW. */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
void WSpanRGBA( const GLcontext* ctx, GLuint n, GLint x, GLint y, const GLubyte rgba[][4], const GLubyte mask[] )
|
||||
{
|
||||
D3DMESACONTEXT *pContext = (D3DMESACONTEXT *)ctx->DriverCtx;
|
||||
DDSURFACEDESC2 *pddsd2;
|
||||
UCHAR *pBuffer;
|
||||
int index;
|
||||
DWORD dwColor;
|
||||
|
||||
/* Get the surface pointer and the pitch. */
|
||||
pddsd2 = LockHAL( pContext->pShared, TRUE );
|
||||
|
||||
/* Find the start of the span. Invert y for Windows. */
|
||||
pBuffer = (UCHAR *)pddsd2->lpSurface + (FLIP(pContext->pShared->dwHeight,y) * pddsd2->lPitch) + (x*pContext->pShared->pixel.cb);
|
||||
|
||||
if ( mask )
|
||||
{
|
||||
for( index = 0; index < n; index++, pBuffer += pContext->pShared->pixel.cb )
|
||||
{
|
||||
if ( mask[index] )
|
||||
{
|
||||
/* Pack the color components. */
|
||||
dwColor = ( ((DWORD)((float)rgba[index][RCOMP] * pContext->pShared->pixel.rScale)) << pContext->pShared->pixel.rShift );
|
||||
dwColor |= ( ((DWORD)((float)rgba[index][GCOMP] * pContext->pShared->pixel.gScale)) << pContext->pShared->pixel.gShift );
|
||||
dwColor |= ( ((DWORD)((float)rgba[index][BCOMP] * pContext->pShared->pixel.bScale)) << pContext->pShared->pixel.bShift );
|
||||
memcpy( pBuffer, &dwColor, pContext->pShared->pixel.cb );
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for( index = 0; index < n; index++, pBuffer += pContext->pShared->pixel.cb )
|
||||
{
|
||||
/* Pack the color components. */
|
||||
dwColor = ( ((DWORD)((float)rgba[index][RCOMP] * pContext->pShared->pixel.rScale)) << pContext->pShared->pixel.rShift );
|
||||
dwColor |= ( ((DWORD)((float)rgba[index][GCOMP] * pContext->pShared->pixel.gScale)) << pContext->pShared->pixel.gShift );
|
||||
dwColor |= ( ((DWORD)((float)rgba[index][BCOMP] * pContext->pShared->pixel.bScale)) << pContext->pShared->pixel.bShift );
|
||||
memcpy( pBuffer, &dwColor, pContext->pShared->pixel.cb );
|
||||
}
|
||||
}
|
||||
|
||||
/* Giver back. */
|
||||
UnlockHAL( pContext->pShared, TRUE );
|
||||
}
|
||||
/*===========================================================================*/
|
||||
/* This proc (as all others) has been written for the general case. I use */
|
||||
/* the PIXELINFO structure to pack the pixel from RGB24 to whatever the Off- */
|
||||
/* Screen render surface uses. The color is solved once from the current */
|
||||
/* color components. The alpha is ignored as Mesa is doing it in SW. */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
void WSpanRGBAMono( const GLcontext* ctx, GLuint n, GLint x, GLint y, const GLubyte mask[] )
|
||||
{
|
||||
D3DMESACONTEXT *pContext = (D3DMESACONTEXT *)ctx->DriverCtx;
|
||||
DDSURFACEDESC2 *pddsd2;
|
||||
UCHAR *pBuffer;
|
||||
int index;
|
||||
DWORD dwColor;
|
||||
|
||||
/* Lock the surface to get the surface pointer and the pitch. */
|
||||
pddsd2 = LockHAL( pContext->pShared, TRUE );
|
||||
|
||||
/* Solve the color once only. (no alpha) */
|
||||
dwColor = ( ((DWORD)((float)pContext->rCurrent * pContext->pShared->pixel.rScale)) << pContext->pShared->pixel.rShift );
|
||||
dwColor |= ( ((DWORD)((float)pContext->gCurrent * pContext->pShared->pixel.gScale)) << pContext->pShared->pixel.gShift );
|
||||
dwColor |= ( ((DWORD)((float)pContext->bCurrent * pContext->pShared->pixel.bScale)) << pContext->pShared->pixel.bShift );
|
||||
|
||||
/* Find the start of the span. Invert y for Windows. */
|
||||
pBuffer = (UCHAR *)pddsd2->lpSurface + (FLIP(pContext->pShared->dwHeight,y) * pddsd2->lPitch) + (x*pContext->pShared->pixel.cb);
|
||||
|
||||
if ( mask )
|
||||
{
|
||||
for( index = 0; index < n; index++, pBuffer += pContext->pShared->pixel.cb )
|
||||
if ( mask[index] )
|
||||
memcpy( pBuffer, &dwColor, pContext->pShared->pixel.cb );
|
||||
}
|
||||
else
|
||||
{
|
||||
for( index = 0; index < n; index++, pBuffer += pContext->pShared->pixel.cb )
|
||||
memcpy( pBuffer, &dwColor, pContext->pShared->pixel.cb );
|
||||
}
|
||||
|
||||
/* Giver back. */
|
||||
UnlockHAL( pContext->pShared, TRUE );
|
||||
}
|
||||
/*===========================================================================*/
|
||||
/* This proc (as all others) has been written for the general case. I use */
|
||||
/* the PIXELINFO structure to pack the pixel from RGB24 to whatever the Off- */
|
||||
/* Screen render surface uses. The alpha is ignored as Mesa does it in SW. */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
void WPixelsRGBA( const GLcontext* ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte rgba[][4], const GLubyte mask[] )
|
||||
{
|
||||
D3DMESACONTEXT *pContext = (D3DMESACONTEXT *)ctx->DriverCtx;
|
||||
DDSURFACEDESC2 *pddsd2;
|
||||
UCHAR *pBuffer;
|
||||
int index;
|
||||
DWORD dwColor;
|
||||
|
||||
/* Get the surface pointer and the pitch. */
|
||||
pddsd2 = LockHAL( pContext->pShared, TRUE );
|
||||
|
||||
if ( mask )
|
||||
{
|
||||
for( index = 0; index < n; index++ )
|
||||
{
|
||||
if ( mask[index] )
|
||||
{
|
||||
/* Pack the color components. */
|
||||
dwColor = ( ((DWORD)((float)rgba[index][RCOMP] * pContext->pShared->pixel.rScale)) << pContext->pShared->pixel.rShift );
|
||||
dwColor |= ( ((DWORD)((float)rgba[index][GCOMP] * pContext->pShared->pixel.gScale)) << pContext->pShared->pixel.gShift );
|
||||
dwColor |= ( ((DWORD)((float)rgba[index][BCOMP] * pContext->pShared->pixel.bScale)) << pContext->pShared->pixel.bShift );
|
||||
|
||||
/* Find the pixel. Invert y for Windows. */
|
||||
pBuffer = (UCHAR *)pddsd2->lpSurface + (FLIP(pContext->pShared->dwHeight,y[index]) * pddsd2->lPitch) + (x[index]*pContext->pShared->pixel.cb);
|
||||
memcpy( pBuffer, &dwColor, pContext->pShared->pixel.cb );
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for( index = 0; index < n; index++ )
|
||||
{
|
||||
/* Pack the color components. */
|
||||
dwColor = ( ((DWORD)((float)rgba[index][RCOMP] * pContext->pShared->pixel.rScale)) << pContext->pShared->pixel.rShift );
|
||||
dwColor |= ( ((DWORD)((float)rgba[index][GCOMP] * pContext->pShared->pixel.gScale)) << pContext->pShared->pixel.gShift );
|
||||
dwColor |= ( ((DWORD)((float)rgba[index][BCOMP] * pContext->pShared->pixel.bScale)) << pContext->pShared->pixel.bShift );
|
||||
|
||||
/* Find the pixel. Invert y for Windows. */
|
||||
pBuffer = (UCHAR *)pddsd2->lpSurface + (FLIP(pContext->pShared->dwHeight,y[index]) * pddsd2->lPitch) + (x[index]*pContext->pShared->pixel.cb);
|
||||
memcpy( pBuffer, &dwColor, pContext->pShared->pixel.cb );
|
||||
}
|
||||
}
|
||||
|
||||
/* Giver back. */
|
||||
UnlockHAL( pContext->pShared, TRUE );
|
||||
}
|
||||
/*===========================================================================*/
|
||||
/* This proc (as all others) has been written for the general case. I use */
|
||||
/* the PIXELINFO structure to pack the pixel from RGB24 to whatever the Off- */
|
||||
/* Screen render surface uses. The color is solved once from the current */
|
||||
/* color components. The alpha is ignored as Mesa is doing it in SW. */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
void WPixelsRGBAMono( const GLcontext* ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte mask[] )
|
||||
{
|
||||
D3DMESACONTEXT *pContext = (D3DMESACONTEXT *)ctx->DriverCtx;
|
||||
DDSURFACEDESC2 *pddsd2;
|
||||
UCHAR *pBuffer;
|
||||
int index;
|
||||
DWORD dwColor;
|
||||
|
||||
/* Get the surface pointer and the pitch. */
|
||||
pddsd2 = LockHAL( pContext->pShared, TRUE );
|
||||
|
||||
/* Solve the color once only. I don't uses the alpha. */
|
||||
dwColor = ( ((DWORD)((float)pContext->rCurrent * pContext->pShared->pixel.rScale)) << pContext->pShared->pixel.rShift );
|
||||
dwColor |= ( ((DWORD)((float)pContext->gCurrent * pContext->pShared->pixel.gScale)) << pContext->pShared->pixel.gShift );
|
||||
dwColor |= ( ((DWORD)((float)pContext->bCurrent * pContext->pShared->pixel.bScale)) << pContext->pShared->pixel.bShift );
|
||||
|
||||
if ( mask )
|
||||
{
|
||||
/* We store the surface pointer as a UCHAR so that pixel.cb (count in btyles) will work for all. */
|
||||
for( index = 0; index < n; index++ )
|
||||
{
|
||||
if ( mask[index] )
|
||||
{
|
||||
/* Find the pixel. Invert y for Windows. */
|
||||
pBuffer = (UCHAR *)pddsd2->lpSurface + (FLIP(pContext->pShared->dwHeight,y[index]) * pddsd2->lPitch) + (x[index]*pContext->pShared->pixel.cb);
|
||||
memcpy( pBuffer, &dwColor, pContext->pShared->pixel.cb );
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* We store the surface pointer as a UCHAR so that pixel.cb (count in btyles) will work for all. */
|
||||
for( index = 0; index < n; index++ )
|
||||
{
|
||||
/* Find the pixel. Invert y for Windows. */
|
||||
pBuffer = (UCHAR *)pddsd2->lpSurface + (FLIP(pContext->pShared->dwHeight,y[index]) * pddsd2->lPitch) + (x[index]*pContext->pShared->pixel.cb);
|
||||
memcpy( pBuffer, &dwColor, pContext->pShared->pixel.cb );
|
||||
}
|
||||
}
|
||||
|
||||
/* Giver back. */
|
||||
UnlockHAL( pContext->pShared, TRUE );
|
||||
}
|
||||
/*===========================================================================*/
|
||||
/* This proc isn't written for speed rather its to handle the general case. */
|
||||
/* I grab each pixel from the surface and unpack the info using the PIXELINFO*/
|
||||
/* structure that was generated from the OffScreen surface pixelformat. The */
|
||||
/* function will not fill in the alpha value as Mesa I have Mesa allocate its*/
|
||||
/* own alpha channel when the context was created. I did this as I didn't */
|
||||
/* feel that it was worth the effort to try and get HW to work (bus bound). */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
void RSpanRGBA( const GLcontext* ctx, GLuint n, GLint x, GLint y, GLubyte rgba[][4] )
|
||||
{
|
||||
D3DMESACONTEXT *pContext = (D3DMESACONTEXT *)ctx->DriverCtx;
|
||||
DDSURFACEDESC2 *pddsd2;
|
||||
UCHAR *pBuffer;
|
||||
int index;
|
||||
DWORD *pdwColor;
|
||||
|
||||
/* Get the surface pointer and the pitch. */
|
||||
pddsd2 = LockHAL( pContext->pShared, TRUE );
|
||||
|
||||
/* Find the start of the span. Invert y for Windows. */
|
||||
pBuffer = (UCHAR *)pddsd2->lpSurface +
|
||||
(FLIP(pContext->pShared->dwHeight,y) * pddsd2->lPitch) +
|
||||
(x*pContext->pShared->pixel.cb);
|
||||
|
||||
/* We store the surface pointer as a UCHAR so that pixel.cb (count in btyles) will work for all. */
|
||||
for( index = 0; index < n; index++, pBuffer += pContext->pShared->pixel.cb )
|
||||
{
|
||||
pdwColor = (DWORD *)pBuffer;
|
||||
rgba[index][RCOMP] = (GLubyte)((float)((*pdwColor & pContext->pShared->pixel.dwRMask) >> pContext->pShared->pixel.rShift) / pContext->pShared->pixel.rScale);
|
||||
rgba[index][GCOMP] = (GLubyte)((float)((*pdwColor & pContext->pShared->pixel.dwGMask) >> pContext->pShared->pixel.gShift) / pContext->pShared->pixel.gScale);
|
||||
rgba[index][BCOMP] = (GLubyte)((float)((*pdwColor & pContext->pShared->pixel.dwBMask) >> pContext->pShared->pixel.bShift) / pContext->pShared->pixel.bScale);
|
||||
}
|
||||
|
||||
/* Giver back. */
|
||||
UnlockHAL( pContext->pShared, TRUE );
|
||||
}
|
||||
/*===========================================================================*/
|
||||
/* This proc isn't written for speed rather its to handle the general case. */
|
||||
/* I grab each pixel from the surface and unpack the info using the PIXELINFO*/
|
||||
/* structure that was generated from the OffScreen surface pixelformat. The */
|
||||
/* function will not fill in the alpha value as Mesa I have Mesa allocate its*/
|
||||
/* own alpha channel when the context was created. I did this as I didn't */
|
||||
/* feel that it was worth the effort to try and get HW to work (bus bound). */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
void RPixelsRGBA( const GLcontext* ctx, GLuint n, const GLint x[], const GLint y[], GLubyte rgba[][4], const GLubyte mask[] )
|
||||
{
|
||||
D3DMESACONTEXT *pContext = (D3DMESACONTEXT *)ctx->DriverCtx;
|
||||
DDSURFACEDESC2 *pddsd2;
|
||||
int index;
|
||||
DWORD *pdwColor;
|
||||
|
||||
/* Get the surface pointer and the pitch. */
|
||||
pddsd2 = LockHAL( pContext->pShared, TRUE );
|
||||
|
||||
if ( mask )
|
||||
{
|
||||
/* We store the surface pointer as a UCHAR so that pixel.cb (count in btyles) will work for all. */
|
||||
for( index = 0; index < n; index++ )
|
||||
{
|
||||
if ( mask[index] )
|
||||
{
|
||||
/* Find the start of the pixel. Invert y for Windows. */
|
||||
pdwColor = (DWORD *)((UCHAR *)pddsd2->lpSurface + (FLIP(pContext->pShared->dwHeight,y[index]) * pddsd2->lPitch) + (x[index]*pContext->pShared->pixel.cb));
|
||||
rgba[index][RCOMP] = (GLubyte)((float)((*pdwColor & pContext->pShared->pixel.dwRMask) >> pContext->pShared->pixel.rShift) / pContext->pShared->pixel.rScale);
|
||||
rgba[index][GCOMP] = (GLubyte)((float)((*pdwColor & pContext->pShared->pixel.dwGMask) >> pContext->pShared->pixel.gShift) / pContext->pShared->pixel.gScale);
|
||||
rgba[index][BCOMP] = (GLubyte)((float)((*pdwColor & pContext->pShared->pixel.dwBMask) >> pContext->pShared->pixel.bShift) / pContext->pShared->pixel.bScale);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* We store the surface pointer as a UCHAR so that pixel.cb (count in btyles) will work for all. */
|
||||
for( index = 0; index < n; index++ )
|
||||
{
|
||||
/* Find the start of the pixel. Invert y for Windows. */
|
||||
pdwColor = (DWORD *)((UCHAR *)pddsd2->lpSurface + (FLIP(pContext->pShared->dwHeight,y[index]) * pddsd2->lPitch) + (x[index]*pContext->pShared->pixel.cb));
|
||||
rgba[index][RCOMP] = (GLubyte)((float)((*pdwColor & pContext->pShared->pixel.dwRMask) >> pContext->pShared->pixel.rShift) / pContext->pShared->pixel.rScale);
|
||||
rgba[index][GCOMP] = (GLubyte)((float)((*pdwColor & pContext->pShared->pixel.dwGMask) >> pContext->pShared->pixel.gShift) / pContext->pShared->pixel.gScale);
|
||||
rgba[index][BCOMP] = (GLubyte)((float)((*pdwColor & pContext->pShared->pixel.dwBMask) >> pContext->pShared->pixel.bShift) / pContext->pShared->pixel.bScale);
|
||||
}
|
||||
}
|
||||
|
||||
/* Giver back. */
|
||||
UnlockHAL( pContext->pShared, TRUE );
|
||||
}
|
||||
/*===========================================================================*/
|
||||
/* */
|
||||
/* Mesa-3.0 DirectX 6 Driver */
|
||||
/* */
|
||||
/* By Leigh McRae */
|
||||
/* */
|
||||
/* http://www.altsoftware.com/ */
|
||||
/* */
|
||||
/* Copyright (c) 1999-1998 alt.software inc. All Rights Reserved */
|
||||
/*===========================================================================*/
|
||||
#include "D3DMesa.h"
|
||||
/*===========================================================================*/
|
||||
/* This call will clear the render surface using the pixel info built from */
|
||||
/* the surface at creation time. The call uses Lock/Unlock to access the */
|
||||
/* surface. The call also special cases a full clear or a dirty rectangle. */
|
||||
/* Finally the call returns the new clear mask that reflects that the color */
|
||||
/* buffer was cleared. */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: the original mask with the bits cleared that represents the buffer*/
|
||||
/* or buffers we just cleared. */
|
||||
/*===========================================================================*/
|
||||
GLbitfield ClearBuffers( GLcontext *ctx, GLbitfield mask, GLboolean all, GLint x, GLint y, GLint width, GLint height )
|
||||
{
|
||||
D3DMESACONTEXT *pContext = (D3DMESACONTEXT *)ctx->DriverCtx;
|
||||
DDSURFACEDESC2 *pddsd2;
|
||||
UCHAR *pBuffer,
|
||||
*pScanLine;
|
||||
int index,
|
||||
index2;
|
||||
DWORD dwColor;
|
||||
|
||||
if ( mask & GL_COLOR_BUFFER_BIT )
|
||||
{
|
||||
/* Lock the surface to get the surface pointer. */
|
||||
pddsd2 = LockHAL( pContext->pShared, TRUE );
|
||||
|
||||
/* Solve the color once only. */
|
||||
dwColor = ( ((DWORD)((float)pContext->rClear * pContext->pShared->pixel.rScale)) << pContext->pShared->pixel.rShift );
|
||||
dwColor |= ( ((DWORD)((float)pContext->gClear * pContext->pShared->pixel.gScale)) << pContext->pShared->pixel.gShift );
|
||||
dwColor |= ( ((DWORD)((float)pContext->bClear * pContext->pShared->pixel.bScale)) << pContext->pShared->pixel.bShift );
|
||||
|
||||
if ( all )
|
||||
{
|
||||
for( index = 0, pScanLine = (UCHAR *)pddsd2->lpSurface; index < pContext->pShared->dwHeight; index++, pScanLine += pddsd2->lPitch )
|
||||
for( pBuffer = pScanLine, index2 = 0; index2 < pContext->pShared->dwWidth; index2++, pBuffer += pContext->pShared->pixel.cb )
|
||||
memcpy( pBuffer, &dwColor, pContext->pShared->pixel.cb );
|
||||
}
|
||||
else
|
||||
{
|
||||
pScanLine = ((UCHAR *)pddsd2->lpSurface) +
|
||||
( (FLIP( pContext->pShared->dwHeight, (y+height)) * pddsd2->lPitch) + (x * pContext->pShared->pixel.cb) );
|
||||
|
||||
for( index = 0; index < height; index++, pScanLine += pddsd2->lPitch )
|
||||
{
|
||||
for( index2 = 0, pBuffer = pScanLine; index2 < width; index2++, pBuffer += pContext->pShared->pixel.cb )
|
||||
memcpy( pBuffer, &dwColor, pContext->pShared->pixel.cb );
|
||||
}
|
||||
}
|
||||
|
||||
UnlockHAL( pContext->pShared, TRUE );
|
||||
}
|
||||
|
||||
return (mask & ~GL_COLOR_BUFFER_BIT);
|
||||
}
|
||||
/*===========================================================================*/
|
||||
/* This proc (as all others) has been written for the general case. I use */
|
||||
/* the PIXELINFO structure to pack the pixel from RGB24 to whatever the Off- */
|
||||
/* Screen render surface uses. The alpha is ignored as Mesa does it in SW. */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
void WSpanRGB( const GLcontext* ctx, GLuint n, GLint x, GLint y, const GLubyte rgb[][3], const GLubyte mask[] )
|
||||
{
|
||||
D3DMESACONTEXT *pContext = (D3DMESACONTEXT *)ctx->DriverCtx;
|
||||
DDSURFACEDESC2 *pddsd2;
|
||||
UCHAR *pBuffer;
|
||||
int index;
|
||||
DWORD dwColor;
|
||||
|
||||
/* Get the surface pointer and the pitch. */
|
||||
pddsd2 = LockHAL( pContext->pShared, TRUE );
|
||||
|
||||
/* Find the start of the span. Invert y for Windows. */
|
||||
pBuffer = (UCHAR *)pddsd2->lpSurface + (FLIP(pContext->pShared->dwHeight,y) * pddsd2->lPitch) + (x*pContext->pShared->pixel.cb);
|
||||
|
||||
if ( mask )
|
||||
{
|
||||
for( index = 0; index < n; index++, pBuffer += pContext->pShared->pixel.cb )
|
||||
{
|
||||
if ( mask[index] )
|
||||
{
|
||||
/* Pack the color components. */
|
||||
dwColor = ( ((DWORD)((float)rgb[index][RCOMP] * pContext->pShared->pixel.rScale)) << pContext->pShared->pixel.rShift );
|
||||
dwColor |= ( ((DWORD)((float)rgb[index][GCOMP] * pContext->pShared->pixel.gScale)) << pContext->pShared->pixel.gShift );
|
||||
dwColor |= ( ((DWORD)((float)rgb[index][BCOMP] * pContext->pShared->pixel.bScale)) << pContext->pShared->pixel.bShift );
|
||||
memcpy( pBuffer, &dwColor, pContext->pShared->pixel.cb );
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for( index = 0; index < n; index++, pBuffer += pContext->pShared->pixel.cb )
|
||||
{
|
||||
/* Pack the color components. */
|
||||
dwColor = ( ((DWORD)((float)rgb[index][RCOMP] * pContext->pShared->pixel.rScale)) << pContext->pShared->pixel.rShift );
|
||||
dwColor |= ( ((DWORD)((float)rgb[index][GCOMP] * pContext->pShared->pixel.gScale)) << pContext->pShared->pixel.gShift );
|
||||
dwColor |= ( ((DWORD)((float)rgb[index][BCOMP] * pContext->pShared->pixel.bScale)) << pContext->pShared->pixel.bShift );
|
||||
memcpy( pBuffer, &dwColor, pContext->pShared->pixel.cb );
|
||||
}
|
||||
}
|
||||
|
||||
/* Giver back. */
|
||||
UnlockHAL( pContext->pShared, TRUE );
|
||||
}
|
||||
/*===========================================================================*/
|
||||
/* This proc (as all others) has been written for the general case. I use */
|
||||
/* the PIXELINFO structure to pack the pixel from RGB24 to whatever the Off- */
|
||||
/* Screen render surface uses. The alpha is ignored as Mesa does it in SW. */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
void WSpanRGBA( const GLcontext* ctx, GLuint n, GLint x, GLint y, const GLubyte rgba[][4], const GLubyte mask[] )
|
||||
{
|
||||
D3DMESACONTEXT *pContext = (D3DMESACONTEXT *)ctx->DriverCtx;
|
||||
DDSURFACEDESC2 *pddsd2;
|
||||
UCHAR *pBuffer;
|
||||
int index;
|
||||
DWORD dwColor;
|
||||
|
||||
/* Get the surface pointer and the pitch. */
|
||||
pddsd2 = LockHAL( pContext->pShared, TRUE );
|
||||
|
||||
/* Find the start of the span. Invert y for Windows. */
|
||||
pBuffer = (UCHAR *)pddsd2->lpSurface + (FLIP(pContext->pShared->dwHeight,y) * pddsd2->lPitch) + (x*pContext->pShared->pixel.cb);
|
||||
|
||||
if ( mask )
|
||||
{
|
||||
for( index = 0; index < n; index++, pBuffer += pContext->pShared->pixel.cb )
|
||||
{
|
||||
if ( mask[index] )
|
||||
{
|
||||
/* Pack the color components. */
|
||||
dwColor = ( ((DWORD)((float)rgba[index][RCOMP] * pContext->pShared->pixel.rScale)) << pContext->pShared->pixel.rShift );
|
||||
dwColor |= ( ((DWORD)((float)rgba[index][GCOMP] * pContext->pShared->pixel.gScale)) << pContext->pShared->pixel.gShift );
|
||||
dwColor |= ( ((DWORD)((float)rgba[index][BCOMP] * pContext->pShared->pixel.bScale)) << pContext->pShared->pixel.bShift );
|
||||
memcpy( pBuffer, &dwColor, pContext->pShared->pixel.cb );
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for( index = 0; index < n; index++, pBuffer += pContext->pShared->pixel.cb )
|
||||
{
|
||||
/* Pack the color components. */
|
||||
dwColor = ( ((DWORD)((float)rgba[index][RCOMP] * pContext->pShared->pixel.rScale)) << pContext->pShared->pixel.rShift );
|
||||
dwColor |= ( ((DWORD)((float)rgba[index][GCOMP] * pContext->pShared->pixel.gScale)) << pContext->pShared->pixel.gShift );
|
||||
dwColor |= ( ((DWORD)((float)rgba[index][BCOMP] * pContext->pShared->pixel.bScale)) << pContext->pShared->pixel.bShift );
|
||||
memcpy( pBuffer, &dwColor, pContext->pShared->pixel.cb );
|
||||
}
|
||||
}
|
||||
|
||||
/* Giver back. */
|
||||
UnlockHAL( pContext->pShared, TRUE );
|
||||
}
|
||||
/*===========================================================================*/
|
||||
/* This proc (as all others) has been written for the general case. I use */
|
||||
/* the PIXELINFO structure to pack the pixel from RGB24 to whatever the Off- */
|
||||
/* Screen render surface uses. The color is solved once from the current */
|
||||
/* color components. The alpha is ignored as Mesa is doing it in SW. */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
void WSpanRGBAMono( const GLcontext* ctx, GLuint n, GLint x, GLint y, const GLubyte mask[] )
|
||||
{
|
||||
D3DMESACONTEXT *pContext = (D3DMESACONTEXT *)ctx->DriverCtx;
|
||||
DDSURFACEDESC2 *pddsd2;
|
||||
UCHAR *pBuffer;
|
||||
int index;
|
||||
DWORD dwColor;
|
||||
|
||||
/* Lock the surface to get the surface pointer and the pitch. */
|
||||
pddsd2 = LockHAL( pContext->pShared, TRUE );
|
||||
|
||||
/* Solve the color once only. (no alpha) */
|
||||
dwColor = ( ((DWORD)((float)pContext->rCurrent * pContext->pShared->pixel.rScale)) << pContext->pShared->pixel.rShift );
|
||||
dwColor |= ( ((DWORD)((float)pContext->gCurrent * pContext->pShared->pixel.gScale)) << pContext->pShared->pixel.gShift );
|
||||
dwColor |= ( ((DWORD)((float)pContext->bCurrent * pContext->pShared->pixel.bScale)) << pContext->pShared->pixel.bShift );
|
||||
|
||||
/* Find the start of the span. Invert y for Windows. */
|
||||
pBuffer = (UCHAR *)pddsd2->lpSurface + (FLIP(pContext->pShared->dwHeight,y) * pddsd2->lPitch) + (x*pContext->pShared->pixel.cb);
|
||||
|
||||
if ( mask )
|
||||
{
|
||||
for( index = 0; index < n; index++, pBuffer += pContext->pShared->pixel.cb )
|
||||
if ( mask[index] )
|
||||
memcpy( pBuffer, &dwColor, pContext->pShared->pixel.cb );
|
||||
}
|
||||
else
|
||||
{
|
||||
for( index = 0; index < n; index++, pBuffer += pContext->pShared->pixel.cb )
|
||||
memcpy( pBuffer, &dwColor, pContext->pShared->pixel.cb );
|
||||
}
|
||||
|
||||
/* Giver back. */
|
||||
UnlockHAL( pContext->pShared, TRUE );
|
||||
}
|
||||
/*===========================================================================*/
|
||||
/* This proc (as all others) has been written for the general case. I use */
|
||||
/* the PIXELINFO structure to pack the pixel from RGB24 to whatever the Off- */
|
||||
/* Screen render surface uses. The alpha is ignored as Mesa does it in SW. */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
void WPixelsRGBA( const GLcontext* ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte rgba[][4], const GLubyte mask[] )
|
||||
{
|
||||
D3DMESACONTEXT *pContext = (D3DMESACONTEXT *)ctx->DriverCtx;
|
||||
DDSURFACEDESC2 *pddsd2;
|
||||
UCHAR *pBuffer;
|
||||
int index;
|
||||
DWORD dwColor;
|
||||
|
||||
/* Get the surface pointer and the pitch. */
|
||||
pddsd2 = LockHAL( pContext->pShared, TRUE );
|
||||
|
||||
if ( mask )
|
||||
{
|
||||
for( index = 0; index < n; index++ )
|
||||
{
|
||||
if ( mask[index] )
|
||||
{
|
||||
/* Pack the color components. */
|
||||
dwColor = ( ((DWORD)((float)rgba[index][RCOMP] * pContext->pShared->pixel.rScale)) << pContext->pShared->pixel.rShift );
|
||||
dwColor |= ( ((DWORD)((float)rgba[index][GCOMP] * pContext->pShared->pixel.gScale)) << pContext->pShared->pixel.gShift );
|
||||
dwColor |= ( ((DWORD)((float)rgba[index][BCOMP] * pContext->pShared->pixel.bScale)) << pContext->pShared->pixel.bShift );
|
||||
|
||||
/* Find the pixel. Invert y for Windows. */
|
||||
pBuffer = (UCHAR *)pddsd2->lpSurface + (FLIP(pContext->pShared->dwHeight,y[index]) * pddsd2->lPitch) + (x[index]*pContext->pShared->pixel.cb);
|
||||
memcpy( pBuffer, &dwColor, pContext->pShared->pixel.cb );
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
for( index = 0; index < n; index++ )
|
||||
{
|
||||
/* Pack the color components. */
|
||||
dwColor = ( ((DWORD)((float)rgba[index][RCOMP] * pContext->pShared->pixel.rScale)) << pContext->pShared->pixel.rShift );
|
||||
dwColor |= ( ((DWORD)((float)rgba[index][GCOMP] * pContext->pShared->pixel.gScale)) << pContext->pShared->pixel.gShift );
|
||||
dwColor |= ( ((DWORD)((float)rgba[index][BCOMP] * pContext->pShared->pixel.bScale)) << pContext->pShared->pixel.bShift );
|
||||
|
||||
/* Find the pixel. Invert y for Windows. */
|
||||
pBuffer = (UCHAR *)pddsd2->lpSurface + (FLIP(pContext->pShared->dwHeight,y[index]) * pddsd2->lPitch) + (x[index]*pContext->pShared->pixel.cb);
|
||||
memcpy( pBuffer, &dwColor, pContext->pShared->pixel.cb );
|
||||
}
|
||||
}
|
||||
|
||||
/* Giver back. */
|
||||
UnlockHAL( pContext->pShared, TRUE );
|
||||
}
|
||||
/*===========================================================================*/
|
||||
/* This proc (as all others) has been written for the general case. I use */
|
||||
/* the PIXELINFO structure to pack the pixel from RGB24 to whatever the Off- */
|
||||
/* Screen render surface uses. The color is solved once from the current */
|
||||
/* color components. The alpha is ignored as Mesa is doing it in SW. */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
void WPixelsRGBAMono( const GLcontext* ctx, GLuint n, const GLint x[], const GLint y[], const GLubyte mask[] )
|
||||
{
|
||||
D3DMESACONTEXT *pContext = (D3DMESACONTEXT *)ctx->DriverCtx;
|
||||
DDSURFACEDESC2 *pddsd2;
|
||||
UCHAR *pBuffer;
|
||||
int index;
|
||||
DWORD dwColor;
|
||||
|
||||
/* Get the surface pointer and the pitch. */
|
||||
pddsd2 = LockHAL( pContext->pShared, TRUE );
|
||||
|
||||
/* Solve the color once only. I don't uses the alpha. */
|
||||
dwColor = ( ((DWORD)((float)pContext->rCurrent * pContext->pShared->pixel.rScale)) << pContext->pShared->pixel.rShift );
|
||||
dwColor |= ( ((DWORD)((float)pContext->gCurrent * pContext->pShared->pixel.gScale)) << pContext->pShared->pixel.gShift );
|
||||
dwColor |= ( ((DWORD)((float)pContext->bCurrent * pContext->pShared->pixel.bScale)) << pContext->pShared->pixel.bShift );
|
||||
|
||||
if ( mask )
|
||||
{
|
||||
/* We store the surface pointer as a UCHAR so that pixel.cb (count in btyles) will work for all. */
|
||||
for( index = 0; index < n; index++ )
|
||||
{
|
||||
if ( mask[index] )
|
||||
{
|
||||
/* Find the pixel. Invert y for Windows. */
|
||||
pBuffer = (UCHAR *)pddsd2->lpSurface + (FLIP(pContext->pShared->dwHeight,y[index]) * pddsd2->lPitch) + (x[index]*pContext->pShared->pixel.cb);
|
||||
memcpy( pBuffer, &dwColor, pContext->pShared->pixel.cb );
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* We store the surface pointer as a UCHAR so that pixel.cb (count in btyles) will work for all. */
|
||||
for( index = 0; index < n; index++ )
|
||||
{
|
||||
/* Find the pixel. Invert y for Windows. */
|
||||
pBuffer = (UCHAR *)pddsd2->lpSurface + (FLIP(pContext->pShared->dwHeight,y[index]) * pddsd2->lPitch) + (x[index]*pContext->pShared->pixel.cb);
|
||||
memcpy( pBuffer, &dwColor, pContext->pShared->pixel.cb );
|
||||
}
|
||||
}
|
||||
|
||||
/* Giver back. */
|
||||
UnlockHAL( pContext->pShared, TRUE );
|
||||
}
|
||||
/*===========================================================================*/
|
||||
/* This proc isn't written for speed rather its to handle the general case. */
|
||||
/* I grab each pixel from the surface and unpack the info using the PIXELINFO*/
|
||||
/* structure that was generated from the OffScreen surface pixelformat. The */
|
||||
/* function will not fill in the alpha value as Mesa I have Mesa allocate its*/
|
||||
/* own alpha channel when the context was created. I did this as I didn't */
|
||||
/* feel that it was worth the effort to try and get HW to work (bus bound). */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
void RSpanRGBA( const GLcontext* ctx, GLuint n, GLint x, GLint y, GLubyte rgba[][4] )
|
||||
{
|
||||
D3DMESACONTEXT *pContext = (D3DMESACONTEXT *)ctx->DriverCtx;
|
||||
DDSURFACEDESC2 *pddsd2;
|
||||
UCHAR *pBuffer;
|
||||
int index;
|
||||
DWORD *pdwColor;
|
||||
|
||||
/* Get the surface pointer and the pitch. */
|
||||
pddsd2 = LockHAL( pContext->pShared, TRUE );
|
||||
|
||||
/* Find the start of the span. Invert y for Windows. */
|
||||
pBuffer = (UCHAR *)pddsd2->lpSurface +
|
||||
(FLIP(pContext->pShared->dwHeight,y) * pddsd2->lPitch) +
|
||||
(x*pContext->pShared->pixel.cb);
|
||||
|
||||
/* We store the surface pointer as a UCHAR so that pixel.cb (count in btyles) will work for all. */
|
||||
for( index = 0; index < n; index++, pBuffer += pContext->pShared->pixel.cb )
|
||||
{
|
||||
pdwColor = (DWORD *)pBuffer;
|
||||
rgba[index][RCOMP] = (GLubyte)((float)((*pdwColor & pContext->pShared->pixel.dwRMask) >> pContext->pShared->pixel.rShift) / pContext->pShared->pixel.rScale);
|
||||
rgba[index][GCOMP] = (GLubyte)((float)((*pdwColor & pContext->pShared->pixel.dwGMask) >> pContext->pShared->pixel.gShift) / pContext->pShared->pixel.gScale);
|
||||
rgba[index][BCOMP] = (GLubyte)((float)((*pdwColor & pContext->pShared->pixel.dwBMask) >> pContext->pShared->pixel.bShift) / pContext->pShared->pixel.bScale);
|
||||
}
|
||||
|
||||
/* Giver back. */
|
||||
UnlockHAL( pContext->pShared, TRUE );
|
||||
}
|
||||
/*===========================================================================*/
|
||||
/* This proc isn't written for speed rather its to handle the general case. */
|
||||
/* I grab each pixel from the surface and unpack the info using the PIXELINFO*/
|
||||
/* structure that was generated from the OffScreen surface pixelformat. The */
|
||||
/* function will not fill in the alpha value as Mesa I have Mesa allocate its*/
|
||||
/* own alpha channel when the context was created. I did this as I didn't */
|
||||
/* feel that it was worth the effort to try and get HW to work (bus bound). */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
void RPixelsRGBA( const GLcontext* ctx, GLuint n, const GLint x[], const GLint y[], GLubyte rgba[][4], const GLubyte mask[] )
|
||||
{
|
||||
D3DMESACONTEXT *pContext = (D3DMESACONTEXT *)ctx->DriverCtx;
|
||||
DDSURFACEDESC2 *pddsd2;
|
||||
int index;
|
||||
DWORD *pdwColor;
|
||||
|
||||
/* Get the surface pointer and the pitch. */
|
||||
pddsd2 = LockHAL( pContext->pShared, TRUE );
|
||||
|
||||
if ( mask )
|
||||
{
|
||||
/* We store the surface pointer as a UCHAR so that pixel.cb (count in btyles) will work for all. */
|
||||
for( index = 0; index < n; index++ )
|
||||
{
|
||||
if ( mask[index] )
|
||||
{
|
||||
/* Find the start of the pixel. Invert y for Windows. */
|
||||
pdwColor = (DWORD *)((UCHAR *)pddsd2->lpSurface + (FLIP(pContext->pShared->dwHeight,y[index]) * pddsd2->lPitch) + (x[index]*pContext->pShared->pixel.cb));
|
||||
rgba[index][RCOMP] = (GLubyte)((float)((*pdwColor & pContext->pShared->pixel.dwRMask) >> pContext->pShared->pixel.rShift) / pContext->pShared->pixel.rScale);
|
||||
rgba[index][GCOMP] = (GLubyte)((float)((*pdwColor & pContext->pShared->pixel.dwGMask) >> pContext->pShared->pixel.gShift) / pContext->pShared->pixel.gScale);
|
||||
rgba[index][BCOMP] = (GLubyte)((float)((*pdwColor & pContext->pShared->pixel.dwBMask) >> pContext->pShared->pixel.bShift) / pContext->pShared->pixel.bScale);
|
||||
}
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
/* We store the surface pointer as a UCHAR so that pixel.cb (count in btyles) will work for all. */
|
||||
for( index = 0; index < n; index++ )
|
||||
{
|
||||
/* Find the start of the pixel. Invert y for Windows. */
|
||||
pdwColor = (DWORD *)((UCHAR *)pddsd2->lpSurface + (FLIP(pContext->pShared->dwHeight,y[index]) * pddsd2->lPitch) + (x[index]*pContext->pShared->pixel.cb));
|
||||
rgba[index][RCOMP] = (GLubyte)((float)((*pdwColor & pContext->pShared->pixel.dwRMask) >> pContext->pShared->pixel.rShift) / pContext->pShared->pixel.rScale);
|
||||
rgba[index][GCOMP] = (GLubyte)((float)((*pdwColor & pContext->pShared->pixel.dwGMask) >> pContext->pShared->pixel.gShift) / pContext->pShared->pixel.gScale);
|
||||
rgba[index][BCOMP] = (GLubyte)((float)((*pdwColor & pContext->pShared->pixel.dwBMask) >> pContext->pShared->pixel.bShift) / pContext->pShared->pixel.bScale);
|
||||
}
|
||||
}
|
||||
|
||||
/* Giver back. */
|
||||
UnlockHAL( pContext->pShared, TRUE );
|
||||
}
|
||||
|
|
|
@ -1,143 +1,143 @@
|
|||
/*===========================================================================*/
|
||||
/* */
|
||||
/* Mesa-3.0 DirectX 6 Driver */
|
||||
/* */
|
||||
/* By Leigh McRae */
|
||||
/* */
|
||||
/* http://www.altsoftware.com/ */
|
||||
/* */
|
||||
/* Copyright (c) 1999-1998 alt.software inc. All Rights Reserved */
|
||||
/*===========================================================================*/
|
||||
#include "Debug.h"
|
||||
/*===========================================================================*/
|
||||
/* Global variables. */
|
||||
/*===========================================================================*/
|
||||
DWORD g_DBGMask = DBG_ALL_ERROR;
|
||||
/*===========================================================================*/
|
||||
/* This is your basic DPF function with printf like support. The function */
|
||||
/* also works with a global debug mask variable. I have written support that*/
|
||||
/* allows for the user's enviroment variable space to be read and set the */
|
||||
/* masks. This is done when the dll starts and is only in the debug version.*/
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
void _cdecl DebugPrint( int mask, char *pszFormat, ... )
|
||||
{
|
||||
char buffer[512];
|
||||
va_list args;
|
||||
|
||||
/* A mask of 0 will always pass. Easy to remeber. */
|
||||
if ( (mask == 0) || (mask & g_DBGMask) )
|
||||
{
|
||||
va_start( args, pszFormat );
|
||||
|
||||
if ( mask & DBG_ALL_ERROR )
|
||||
OutputDebugString( "MesaD3D: (ERROR)" );
|
||||
else
|
||||
OutputDebugString( "MesaD3D: " );
|
||||
|
||||
vsprintf( buffer, pszFormat, args );
|
||||
strcat( buffer, "\n" );
|
||||
OutputDebugString( buffer );
|
||||
|
||||
va_end( args );
|
||||
}
|
||||
}
|
||||
/*===========================================================================*/
|
||||
/* This call reads the users enviroment variables and sets any debug mask */
|
||||
/* that they have set to TRUE. Now the value must be "TRUE". */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
void ReadDBGEnv( void )
|
||||
{
|
||||
g_DBGMask = DBG_ALL_ERROR;
|
||||
|
||||
#define IS_VAR_SET(v) if ( getenv( # v ) && !strcmp(getenv( # v ),"TRUE") ) g_DBGMask |= v;
|
||||
|
||||
IS_VAR_SET( DBG_FUNC );
|
||||
IS_VAR_SET( DBG_STATES );
|
||||
|
||||
IS_VAR_SET( DBG_CNTX_INFO );
|
||||
IS_VAR_SET( DBG_CNTX_WARN );
|
||||
IS_VAR_SET( DBG_CNTX_PROFILE );
|
||||
IS_VAR_SET( DBG_CNTX_ERROR );
|
||||
IS_VAR_SET( DBG_CNTX_ALL );
|
||||
|
||||
IS_VAR_SET( DBG_PRIM_INFO );
|
||||
IS_VAR_SET( DBG_PRIM_WARN );
|
||||
IS_VAR_SET( DBG_PRIM_PROFILE );
|
||||
IS_VAR_SET( DBG_PRIM_ERROR );
|
||||
IS_VAR_SET( DBG_PRIM_ALL );
|
||||
|
||||
IS_VAR_SET( DBG_TXT_INFO );
|
||||
IS_VAR_SET( DBG_TXT_WARN );
|
||||
IS_VAR_SET( DBG_TXT_PROFILE );
|
||||
IS_VAR_SET( DBG_TXT_ERROR );
|
||||
IS_VAR_SET( DBG_TXT_ALL );
|
||||
|
||||
IS_VAR_SET( DBG_ALL_INFO );
|
||||
IS_VAR_SET( DBG_ALL_WARN );
|
||||
IS_VAR_SET( DBG_ALL_PROFILE );
|
||||
IS_VAR_SET( DBG_ALL_ERROR );
|
||||
IS_VAR_SET( DBG_ALL );
|
||||
|
||||
#undef IS_VAR_SET
|
||||
}
|
||||
/*===========================================================================*/
|
||||
/* This function will take a pointer to a DDSURFACEDESC2 structure & display*/
|
||||
/* the parsed information using a DPF call. */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
void DebugPixelFormat( char *pszSurfaceName, DDPIXELFORMAT *pddpf )
|
||||
{
|
||||
char buffer[256];
|
||||
|
||||
/* Parse the flag type and write the string equivalent. */
|
||||
if ( pddpf->dwFlags & DDPF_ALPHA )
|
||||
strcat( buffer, "DDPF_ALPHA " );
|
||||
if ( pddpf->dwFlags & DDPF_ALPHAPIXELS )
|
||||
strcat( buffer, "DDPF_ALPHAPIXELS " );
|
||||
if ( pddpf->dwFlags & DDPF_ALPHAPREMULT )
|
||||
strcat( buffer, "DDPF_ALPHAPREMULT " );
|
||||
if ( pddpf->dwFlags & DDPF_BUMPLUMINANCE )
|
||||
strcat( buffer, "DDPF_BUMPLUMINANCE " );
|
||||
if ( pddpf->dwFlags & DDPF_BUMPDUDV )
|
||||
strcat( buffer, "DDPF_BUMPDUDV " );
|
||||
if ( pddpf->dwFlags & DDPF_COMPRESSED )
|
||||
strcat( buffer, "DDPF_COMPRESSED " );
|
||||
if ( pddpf->dwFlags & DDPF_FOURCC )
|
||||
strcat( buffer, "DDPF_FOURCC " );
|
||||
if ( pddpf->dwFlags & DDPF_LUMINANCE )
|
||||
strcat( buffer, "DDPF_LUMINANCE " );
|
||||
if ( pddpf->dwFlags & DDPF_PALETTEINDEXED1 )
|
||||
strcat( buffer, "DDPF_PALETTEINDEXED1 " );
|
||||
if ( pddpf->dwFlags & DDPF_PALETTEINDEXED2 )
|
||||
strcat( buffer, "DDPF_PALETTEINDEXED2 " );
|
||||
if ( pddpf->dwFlags & DDPF_PALETTEINDEXED4 )
|
||||
strcat( buffer, "DDPF_PALETTEINDEXED4 " );
|
||||
if ( pddpf->dwFlags & DDPF_PALETTEINDEXED8 )
|
||||
strcat( buffer, "DDPF_PALETTEINDEXED8 " );
|
||||
if ( pddpf->dwFlags & DDPF_PALETTEINDEXEDTO8 )
|
||||
strcat( buffer, "DDPF_PALETTEINDEXEDTO8 " );
|
||||
if ( pddpf->dwFlags & DDPF_RGB )
|
||||
strcat( buffer, "DDPF_RGB " );
|
||||
if ( pddpf->dwFlags & DDPF_RGBTOYUV )
|
||||
strcat( buffer, "DDPF_RGBTOYUV " );
|
||||
if ( pddpf->dwFlags & DDPF_STENCILBUFFER )
|
||||
strcat( buffer, "DDPF_STENCILBUFFER " );
|
||||
if ( pddpf->dwFlags & DDPF_YUV )
|
||||
strcat( buffer, "DDPF_YUV " );
|
||||
if ( pddpf->dwFlags & DDPF_ZBUFFER )
|
||||
strcat( buffer, "DDPF_ZBUFFER " );
|
||||
if ( pddpf->dwFlags & DDPF_ZPIXELS )
|
||||
strcat( buffer, "DDPF_ZPIXELS " );
|
||||
|
||||
DPF(( (DBG_TXT_INFO|DBG_CNTX_INFO),"%s", buffer ));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
/*===========================================================================*/
|
||||
/* */
|
||||
/* Mesa-3.0 DirectX 6 Driver */
|
||||
/* */
|
||||
/* By Leigh McRae */
|
||||
/* */
|
||||
/* http://www.altsoftware.com/ */
|
||||
/* */
|
||||
/* Copyright (c) 1999-1998 alt.software inc. All Rights Reserved */
|
||||
/*===========================================================================*/
|
||||
#include "Debug.h"
|
||||
/*===========================================================================*/
|
||||
/* Global variables. */
|
||||
/*===========================================================================*/
|
||||
DWORD g_DBGMask = DBG_ALL_ERROR;
|
||||
/*===========================================================================*/
|
||||
/* This is your basic DPF function with printf like support. The function */
|
||||
/* also works with a global debug mask variable. I have written support that*/
|
||||
/* allows for the user's enviroment variable space to be read and set the */
|
||||
/* masks. This is done when the dll starts and is only in the debug version.*/
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
void _cdecl DebugPrint( int mask, char *pszFormat, ... )
|
||||
{
|
||||
char buffer[512];
|
||||
va_list args;
|
||||
|
||||
/* A mask of 0 will always pass. Easy to remeber. */
|
||||
if ( (mask == 0) || (mask & g_DBGMask) )
|
||||
{
|
||||
va_start( args, pszFormat );
|
||||
|
||||
if ( mask & DBG_ALL_ERROR )
|
||||
OutputDebugString( "MesaD3D: (ERROR)" );
|
||||
else
|
||||
OutputDebugString( "MesaD3D: " );
|
||||
|
||||
vsprintf( buffer, pszFormat, args );
|
||||
strcat( buffer, "\n" );
|
||||
OutputDebugString( buffer );
|
||||
|
||||
va_end( args );
|
||||
}
|
||||
}
|
||||
/*===========================================================================*/
|
||||
/* This call reads the users enviroment variables and sets any debug mask */
|
||||
/* that they have set to TRUE. Now the value must be "TRUE". */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
void ReadDBGEnv( void )
|
||||
{
|
||||
g_DBGMask = DBG_ALL_ERROR;
|
||||
|
||||
#define IS_VAR_SET(v) if ( getenv( # v ) && !strcmp(getenv( # v ),"TRUE") ) g_DBGMask |= v;
|
||||
|
||||
IS_VAR_SET( DBG_FUNC );
|
||||
IS_VAR_SET( DBG_STATES );
|
||||
|
||||
IS_VAR_SET( DBG_CNTX_INFO );
|
||||
IS_VAR_SET( DBG_CNTX_WARN );
|
||||
IS_VAR_SET( DBG_CNTX_PROFILE );
|
||||
IS_VAR_SET( DBG_CNTX_ERROR );
|
||||
IS_VAR_SET( DBG_CNTX_ALL );
|
||||
|
||||
IS_VAR_SET( DBG_PRIM_INFO );
|
||||
IS_VAR_SET( DBG_PRIM_WARN );
|
||||
IS_VAR_SET( DBG_PRIM_PROFILE );
|
||||
IS_VAR_SET( DBG_PRIM_ERROR );
|
||||
IS_VAR_SET( DBG_PRIM_ALL );
|
||||
|
||||
IS_VAR_SET( DBG_TXT_INFO );
|
||||
IS_VAR_SET( DBG_TXT_WARN );
|
||||
IS_VAR_SET( DBG_TXT_PROFILE );
|
||||
IS_VAR_SET( DBG_TXT_ERROR );
|
||||
IS_VAR_SET( DBG_TXT_ALL );
|
||||
|
||||
IS_VAR_SET( DBG_ALL_INFO );
|
||||
IS_VAR_SET( DBG_ALL_WARN );
|
||||
IS_VAR_SET( DBG_ALL_PROFILE );
|
||||
IS_VAR_SET( DBG_ALL_ERROR );
|
||||
IS_VAR_SET( DBG_ALL );
|
||||
|
||||
#undef IS_VAR_SET
|
||||
}
|
||||
/*===========================================================================*/
|
||||
/* This function will take a pointer to a DDSURFACEDESC2 structure & display*/
|
||||
/* the parsed information using a DPF call. */
|
||||
/*===========================================================================*/
|
||||
/* RETURN: */
|
||||
/*===========================================================================*/
|
||||
void DebugPixelFormat( char *pszSurfaceName, DDPIXELFORMAT *pddpf )
|
||||
{
|
||||
char buffer[256];
|
||||
|
||||
/* Parse the flag type and write the string equivalent. */
|
||||
if ( pddpf->dwFlags & DDPF_ALPHA )
|
||||
strcat( buffer, "DDPF_ALPHA " );
|
||||
if ( pddpf->dwFlags & DDPF_ALPHAPIXELS )
|
||||
strcat( buffer, "DDPF_ALPHAPIXELS " );
|
||||
if ( pddpf->dwFlags & DDPF_ALPHAPREMULT )
|
||||
strcat( buffer, "DDPF_ALPHAPREMULT " );
|
||||
if ( pddpf->dwFlags & DDPF_BUMPLUMINANCE )
|
||||
strcat( buffer, "DDPF_BUMPLUMINANCE " );
|
||||
if ( pddpf->dwFlags & DDPF_BUMPDUDV )
|
||||
strcat( buffer, "DDPF_BUMPDUDV " );
|
||||
if ( pddpf->dwFlags & DDPF_COMPRESSED )
|
||||
strcat( buffer, "DDPF_COMPRESSED " );
|
||||
if ( pddpf->dwFlags & DDPF_FOURCC )
|
||||
strcat( buffer, "DDPF_FOURCC " );
|
||||
if ( pddpf->dwFlags & DDPF_LUMINANCE )
|
||||
strcat( buffer, "DDPF_LUMINANCE " );
|
||||
if ( pddpf->dwFlags & DDPF_PALETTEINDEXED1 )
|
||||
strcat( buffer, "DDPF_PALETTEINDEXED1 " );
|
||||
if ( pddpf->dwFlags & DDPF_PALETTEINDEXED2 )
|
||||
strcat( buffer, "DDPF_PALETTEINDEXED2 " );
|
||||
if ( pddpf->dwFlags & DDPF_PALETTEINDEXED4 )
|
||||
strcat( buffer, "DDPF_PALETTEINDEXED4 " );
|
||||
if ( pddpf->dwFlags & DDPF_PALETTEINDEXED8 )
|
||||
strcat( buffer, "DDPF_PALETTEINDEXED8 " );
|
||||
if ( pddpf->dwFlags & DDPF_PALETTEINDEXEDTO8 )
|
||||
strcat( buffer, "DDPF_PALETTEINDEXEDTO8 " );
|
||||
if ( pddpf->dwFlags & DDPF_RGB )
|
||||
strcat( buffer, "DDPF_RGB " );
|
||||
if ( pddpf->dwFlags & DDPF_RGBTOYUV )
|
||||
strcat( buffer, "DDPF_RGBTOYUV " );
|
||||
if ( pddpf->dwFlags & DDPF_STENCILBUFFER )
|
||||
strcat( buffer, "DDPF_STENCILBUFFER " );
|
||||
if ( pddpf->dwFlags & DDPF_YUV )
|
||||
strcat( buffer, "DDPF_YUV " );
|
||||
if ( pddpf->dwFlags & DDPF_ZBUFFER )
|
||||
strcat( buffer, "DDPF_ZBUFFER " );
|
||||
if ( pddpf->dwFlags & DDPF_ZPIXELS )
|
||||
strcat( buffer, "DDPF_ZPIXELS " );
|
||||
|
||||
DPF(( (DBG_TXT_INFO|DBG_CNTX_INFO),"%s", buffer ));
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,90 +1,90 @@
|
|||
/*===========================================================================*/
|
||||
/* */
|
||||
/* Mesa-3.0 DirectX 6 Driver */
|
||||
/* */
|
||||
/* By Leigh McRae */
|
||||
/* */
|
||||
/* http://www.altsoftware.com/ */
|
||||
/* */
|
||||
/* Copyright (c) 1999-1998 alt.software inc. All Rights Reserved */
|
||||
/*===========================================================================*/
|
||||
#ifndef _DEBUG_H
|
||||
#define _DEBUG_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Includes. */
|
||||
/*===========================================================================*/
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <ddraw.h>
|
||||
#include <d3d.h>
|
||||
#include "D3DShared.h"
|
||||
/*===========================================================================*/
|
||||
/* Magic numbers. */
|
||||
/*===========================================================================*/
|
||||
/*===========================================================================*/
|
||||
/* Macros defines. */
|
||||
/*===========================================================================*/
|
||||
#define DBG_FUNC 0x00000001
|
||||
#define DBG_STATES 0x00000002
|
||||
|
||||
#define DBG_CNTX_INFO 0x00000010
|
||||
#define DBG_CNTX_WARN 0x00000020
|
||||
#define DBG_CNTX_PROFILE 0x00000040
|
||||
#define DBG_CNTX_ERROR 0x00000080
|
||||
#define DBG_CNTX_ALL 0x000000F0
|
||||
|
||||
#define DBG_PRIM_INFO 0x00000100
|
||||
#define DBG_PRIM_WARN 0x00000200
|
||||
#define DBG_PRIM_PROFILE 0x00000400
|
||||
#define DBG_PRIM_ERROR 0x00000800
|
||||
#define DBG_PRIM_ALL 0x00000F00
|
||||
|
||||
#define DBG_TXT_INFO 0x00001000
|
||||
#define DBG_TXT_WARN 0x00002000
|
||||
#define DBG_TXT_PROFILE 0x00004000
|
||||
#define DBG_TXT_ERROR 0x00008000
|
||||
#define DBG_TXT_ALL 0x0000F000
|
||||
|
||||
#define DBG_ALL_INFO 0x11111110
|
||||
#define DBG_ALL_WARN 0x22222220
|
||||
#define DBG_ALL_PROFILE 0x44444440
|
||||
#define DBG_ALL_ERROR 0x88888880
|
||||
#define DBG_ALL 0xFFFFFFFF
|
||||
|
||||
#ifdef D3D_DEBUG
|
||||
# define DPF(arg) DebugPrint arg
|
||||
# define RIP(pH,msg,err) OutputDebugString(msg); \
|
||||
OutputDebugString(err); \
|
||||
OutputDebugString("\n"); \
|
||||
FatalShutDown(pH)
|
||||
#else
|
||||
# define DPF(arg)
|
||||
# define RIP(pH,msg,err) FatalShutDown(pH)
|
||||
#endif
|
||||
/*===========================================================================*/
|
||||
/* Type defines. */
|
||||
/*===========================================================================*/
|
||||
/*===========================================================================*/
|
||||
/* Function prototypes. */
|
||||
/*===========================================================================*/
|
||||
extern void ReadDBGEnv( void );
|
||||
extern void _cdecl DebugPrint( int mask, char *pszFormat, ... );
|
||||
extern void DebugPixelFormat( char *pszSurfaceName, DDPIXELFORMAT *pddpf );
|
||||
/*===========================================================================*/
|
||||
/* Global variables. */
|
||||
/*===========================================================================*/
|
||||
extern DWORD g_DBGMask;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
/*===========================================================================*/
|
||||
/* */
|
||||
/* Mesa-3.0 DirectX 6 Driver */
|
||||
/* */
|
||||
/* By Leigh McRae */
|
||||
/* */
|
||||
/* http://www.altsoftware.com/ */
|
||||
/* */
|
||||
/* Copyright (c) 1999-1998 alt.software inc. All Rights Reserved */
|
||||
/*===========================================================================*/
|
||||
#ifndef _DEBUG_H
|
||||
#define _DEBUG_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/*===========================================================================*/
|
||||
/* Includes. */
|
||||
/*===========================================================================*/
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
#include <ddraw.h>
|
||||
#include <d3d.h>
|
||||
#include "D3DShared.h"
|
||||
/*===========================================================================*/
|
||||
/* Magic numbers. */
|
||||
/*===========================================================================*/
|
||||
/*===========================================================================*/
|
||||
/* Macros defines. */
|
||||
/*===========================================================================*/
|
||||
#define DBG_FUNC 0x00000001
|
||||
#define DBG_STATES 0x00000002
|
||||
|
||||
#define DBG_CNTX_INFO 0x00000010
|
||||
#define DBG_CNTX_WARN 0x00000020
|
||||
#define DBG_CNTX_PROFILE 0x00000040
|
||||
#define DBG_CNTX_ERROR 0x00000080
|
||||
#define DBG_CNTX_ALL 0x000000F0
|
||||
|
||||
#define DBG_PRIM_INFO 0x00000100
|
||||
#define DBG_PRIM_WARN 0x00000200
|
||||
#define DBG_PRIM_PROFILE 0x00000400
|
||||
#define DBG_PRIM_ERROR 0x00000800
|
||||
#define DBG_PRIM_ALL 0x00000F00
|
||||
|
||||
#define DBG_TXT_INFO 0x00001000
|
||||
#define DBG_TXT_WARN 0x00002000
|
||||
#define DBG_TXT_PROFILE 0x00004000
|
||||
#define DBG_TXT_ERROR 0x00008000
|
||||
#define DBG_TXT_ALL 0x0000F000
|
||||
|
||||
#define DBG_ALL_INFO 0x11111110
|
||||
#define DBG_ALL_WARN 0x22222220
|
||||
#define DBG_ALL_PROFILE 0x44444440
|
||||
#define DBG_ALL_ERROR 0x88888880
|
||||
#define DBG_ALL 0xFFFFFFFF
|
||||
|
||||
#ifdef D3D_DEBUG
|
||||
# define DPF(arg) DebugPrint arg
|
||||
# define RIP(pH,msg,err) OutputDebugString(msg); \
|
||||
OutputDebugString(err); \
|
||||
OutputDebugString("\n"); \
|
||||
FatalShutDown(pH)
|
||||
#else
|
||||
# define DPF(arg)
|
||||
# define RIP(pH,msg,err) FatalShutDown(pH)
|
||||
#endif
|
||||
/*===========================================================================*/
|
||||
/* Type defines. */
|
||||
/*===========================================================================*/
|
||||
/*===========================================================================*/
|
||||
/* Function prototypes. */
|
||||
/*===========================================================================*/
|
||||
extern void ReadDBGEnv( void );
|
||||
extern void _cdecl DebugPrint( int mask, char *pszFormat, ... );
|
||||
extern void DebugPixelFormat( char *pszSurfaceName, DDPIXELFORMAT *pddpf );
|
||||
/*===========================================================================*/
|
||||
/* Global variables. */
|
||||
/*===========================================================================*/
|
||||
extern DWORD g_DBGMask;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,25 +1,25 @@
|
|||
SET DBG_FUNC=FALSE
|
||||
|
||||
SET DBG_CNTX_INFO=TRUE
|
||||
SET DBG_CNTX_WARN=TRUE
|
||||
SET DBG_CNTX_PROFILE=FALSE
|
||||
SET DBG_CNTX_ERROR=TRUE
|
||||
SET DBG_CNTX_ALL=TRUE
|
||||
|
||||
SET DBG_PRIM_INFO=FALSE
|
||||
SET DBG_PRIM_WARN=FALSE
|
||||
SET DBG_PRIM_PROFILE=FALSE
|
||||
SET DBG_PRIM_ERROR=TRUE
|
||||
SET DBG_PRIM_ALL=FALSE
|
||||
|
||||
SET DBG_TXT_INFO=FALSE
|
||||
SET DBG_TXT_WARN=TRUE
|
||||
SET DBG_TXT_PROFILE=FALSE
|
||||
SET DBG_TXT_ERROR=TRUE
|
||||
SET DBG_TXT_ALL=FALSE
|
||||
|
||||
SET DBG_ALL_INFO=FALSE
|
||||
SET DBG_ALL_WARN=TRUE
|
||||
SET DBG_ALL_PROFILE=FALSE
|
||||
SET DBG_ALL_ERROR=TRUE
|
||||
SET DBG_ALL=FALSE
|
||||
SET DBG_FUNC=FALSE
|
||||
|
||||
SET DBG_CNTX_INFO=TRUE
|
||||
SET DBG_CNTX_WARN=TRUE
|
||||
SET DBG_CNTX_PROFILE=FALSE
|
||||
SET DBG_CNTX_ERROR=TRUE
|
||||
SET DBG_CNTX_ALL=TRUE
|
||||
|
||||
SET DBG_PRIM_INFO=FALSE
|
||||
SET DBG_PRIM_WARN=FALSE
|
||||
SET DBG_PRIM_PROFILE=FALSE
|
||||
SET DBG_PRIM_ERROR=TRUE
|
||||
SET DBG_PRIM_ALL=FALSE
|
||||
|
||||
SET DBG_TXT_INFO=FALSE
|
||||
SET DBG_TXT_WARN=TRUE
|
||||
SET DBG_TXT_PROFILE=FALSE
|
||||
SET DBG_TXT_ERROR=TRUE
|
||||
SET DBG_TXT_ALL=FALSE
|
||||
|
||||
SET DBG_ALL_INFO=FALSE
|
||||
SET DBG_ALL_WARN=TRUE
|
||||
SET DBG_ALL_PROFILE=FALSE
|
||||
SET DBG_ALL_ERROR=TRUE
|
||||
SET DBG_ALL=FALSE
|
||||
|
|
|
@ -1,101 +1,101 @@
|
|||
##############################################################################
|
||||
#
|
||||
# Mesa-3.0 Makefile for DirectX 6 Driver
|
||||
#
|
||||
# By Leigh McRae
|
||||
#
|
||||
# http://www.altsoftware.com/
|
||||
#
|
||||
# Copyright (c) 1999-1998 alt.software inc. All Rights Reserved
|
||||
##############################################################################
|
||||
NAME=
|
||||
TARGET= WGL Driver (D3DHAL)
|
||||
|
||||
D3D_DIR=$(MAKEDIR)\D3D
|
||||
TARGET_DIR=e:\WinNT\System32
|
||||
TEMP_DIR=c:\Temp
|
||||
|
||||
SPACE=-
|
||||
LINKER=link.exe
|
||||
|
||||
INCLUDE=$(SDKROOT)\include;$(INCLUDE)
|
||||
LIB=$(SDKROOT)\lib;$(LIB)
|
||||
##############################################################################
|
||||
CFLAGS = /c /nologo /W1 /G5 /I..\ /I..\..\Include \
|
||||
/D "_WIN32" /D "WIN32" /D "_WINDOWS" /D "__WIN32__" /D "__MSC__" /D "MESAD3D"
|
||||
CPPFLAGS= /c /nologo /W1 /G5 /I..\ /I..\..\Include \
|
||||
/D "_WIN32" /D "WIN32" /D "_WINDOWS" /D "__WIN32__" /D "__MSC__" /D "MESAD3D"
|
||||
|
||||
!IF "$(DEBUG)" == "1"
|
||||
|
||||
CFLAGS = /MTd /Od /Z7 /Yd /D "_DEBUG" /D "D3D_DEBUG" $(CFLAGS)
|
||||
CPPFLAGS = /MTd /Od /Z7 /Yd /D "_DEBUG" /D "D3D_DEBUG" $(CPPFLAGS)
|
||||
BUILD_TYPE=debug
|
||||
|
||||
!ELSE
|
||||
|
||||
CFLAGS = /MT /Ox /D "NDEBUG" $(CFLAGS)
|
||||
CPPFLAGS = /MT /Ox /D "NDEBUG" $(CPPFLAGS)
|
||||
BUILD_TYPE=release
|
||||
|
||||
!ENDIF
|
||||
##############################################################################
|
||||
SRCS_WGL = wgl.c D3Dvbrender.c DDrawPROCS.c NULLProcs.c Debug.c
|
||||
SRCS_HAL = D3DInit.cpp D3DRaster.cpp D3DTextureMgr.cpp D3DUtils.cpp D3DCaps.cpp
|
||||
OBJS_WGL = $(SRCS_WGL:.c=.obj)
|
||||
OBJS_HAL = $(SRCS_HAL:.cpp=.obj)
|
||||
|
||||
WINLIBS = kernel32.lib user32.lib gdi32.lib oldnames.lib
|
||||
DXLIBS =
|
||||
LIBS = $(WINLIBS) $(DXLIBS)
|
||||
###############################################################################
|
||||
# Primary Targets #
|
||||
###############################################################################
|
||||
|
||||
default: header WGL HAL footer
|
||||
|
||||
all: default
|
||||
|
||||
WGL : $(OBJS_WGL)
|
||||
|
||||
HAL : $(OBJS_HAL)
|
||||
|
||||
install : forceit
|
||||
@echo $(SPACE)
|
||||
@echo ========================================
|
||||
@echo Install files created.
|
||||
@echo ========================================
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Secondary Targets #
|
||||
###############################################################################
|
||||
|
||||
clean:
|
||||
@echo ========================================
|
||||
@echo Cleaning $(TARGET)
|
||||
@del *.obj
|
||||
@del *.dep
|
||||
@del *.exp
|
||||
@del *.ncb
|
||||
@del *.plg
|
||||
@del *.lib
|
||||
@echo ========================================
|
||||
|
||||
header:
|
||||
@echo ============================================================
|
||||
@echo Building $(TARGET) ($(BUILD_TYPE) version)
|
||||
@echo ============================================================
|
||||
@echo $(SPACE)
|
||||
|
||||
footer:
|
||||
@echo $(SPACE)
|
||||
@echo ============================================================
|
||||
@echo DONE building $(TARGET) ($(BUILD_TYPE) version)
|
||||
@echo ============================================================
|
||||
|
||||
forceit:
|
||||
|
||||
|
||||
|
||||
|
||||
##############################################################################
|
||||
#
|
||||
# Mesa-3.0 Makefile for DirectX 6 Driver
|
||||
#
|
||||
# By Leigh McRae
|
||||
#
|
||||
# http://www.altsoftware.com/
|
||||
#
|
||||
# Copyright (c) 1999-1998 alt.software inc. All Rights Reserved
|
||||
##############################################################################
|
||||
NAME=
|
||||
TARGET= WGL Driver (D3DHAL)
|
||||
|
||||
D3D_DIR=$(MAKEDIR)\D3D
|
||||
TARGET_DIR=e:\WinNT\System32
|
||||
TEMP_DIR=c:\Temp
|
||||
|
||||
SPACE=-
|
||||
LINKER=link.exe
|
||||
|
||||
INCLUDE=$(SDKROOT)\include;$(INCLUDE)
|
||||
LIB=$(SDKROOT)\lib;$(LIB)
|
||||
##############################################################################
|
||||
CFLAGS = /c /nologo /W1 /G5 /I..\ /I..\..\Include \
|
||||
/D "_WIN32" /D "WIN32" /D "_WINDOWS" /D "__WIN32__" /D "__MSC__" /D "MESAD3D"
|
||||
CPPFLAGS= /c /nologo /W1 /G5 /I..\ /I..\..\Include \
|
||||
/D "_WIN32" /D "WIN32" /D "_WINDOWS" /D "__WIN32__" /D "__MSC__" /D "MESAD3D"
|
||||
|
||||
!IF "$(DEBUG)" == "1"
|
||||
|
||||
CFLAGS = /MTd /Od /Z7 /Yd /D "_DEBUG" /D "D3D_DEBUG" $(CFLAGS)
|
||||
CPPFLAGS = /MTd /Od /Z7 /Yd /D "_DEBUG" /D "D3D_DEBUG" $(CPPFLAGS)
|
||||
BUILD_TYPE=debug
|
||||
|
||||
!ELSE
|
||||
|
||||
CFLAGS = /MT /Ox /D "NDEBUG" $(CFLAGS)
|
||||
CPPFLAGS = /MT /Ox /D "NDEBUG" $(CPPFLAGS)
|
||||
BUILD_TYPE=release
|
||||
|
||||
!ENDIF
|
||||
##############################################################################
|
||||
SRCS_WGL = wgl.c D3Dvbrender.c DDrawPROCS.c NULLProcs.c Debug.c
|
||||
SRCS_HAL = D3DInit.cpp D3DRaster.cpp D3DTextureMgr.cpp D3DUtils.cpp D3DCaps.cpp
|
||||
OBJS_WGL = $(SRCS_WGL:.c=.obj)
|
||||
OBJS_HAL = $(SRCS_HAL:.cpp=.obj)
|
||||
|
||||
WINLIBS = kernel32.lib user32.lib gdi32.lib oldnames.lib
|
||||
DXLIBS =
|
||||
LIBS = $(WINLIBS) $(DXLIBS)
|
||||
###############################################################################
|
||||
# Primary Targets #
|
||||
###############################################################################
|
||||
|
||||
default: header WGL HAL footer
|
||||
|
||||
all: default
|
||||
|
||||
WGL : $(OBJS_WGL)
|
||||
|
||||
HAL : $(OBJS_HAL)
|
||||
|
||||
install : forceit
|
||||
@echo $(SPACE)
|
||||
@echo ========================================
|
||||
@echo Install files created.
|
||||
@echo ========================================
|
||||
|
||||
|
||||
###############################################################################
|
||||
# Secondary Targets #
|
||||
###############################################################################
|
||||
|
||||
clean:
|
||||
@echo ========================================
|
||||
@echo Cleaning $(TARGET)
|
||||
@del *.obj
|
||||
@del *.dep
|
||||
@del *.exp
|
||||
@del *.ncb
|
||||
@del *.plg
|
||||
@del *.lib
|
||||
@echo ========================================
|
||||
|
||||
header:
|
||||
@echo ============================================================
|
||||
@echo Building $(TARGET) ($(BUILD_TYPE) version)
|
||||
@echo ============================================================
|
||||
@echo $(SPACE)
|
||||
|
||||
footer:
|
||||
@echo $(SPACE)
|
||||
@echo ============================================================
|
||||
@echo DONE building $(TARGET) ($(BUILD_TYPE) version)
|
||||
@echo ============================================================
|
||||
|
||||
forceit:
|
||||
|
||||
|
||||
|
||||
|
||||
|
|
|
@ -1,442 +1,442 @@
|
|||
;===========================================================================
|
||||
;
|
||||
; Mesa-3.0 DirectX 6 Driver
|
||||
;
|
||||
; By Leigh McRae
|
||||
;
|
||||
; http://www.altsoftware.com/
|
||||
;
|
||||
; Copyright (c) 1999-1998 alt.software inc. All Rights Reserved
|
||||
;===========================================================================
|
||||
NAME OpenGL32.DLL
|
||||
DESCRIPTION "Mesa-3.0 DX6 Driver Version 0.5"
|
||||
|
||||
EXPORTS
|
||||
DllMain
|
||||
glAccum
|
||||
glAlphaFunc
|
||||
glAreTexturesResident
|
||||
glAreTexturesResidentEXT
|
||||
glArrayElement
|
||||
glArrayElementEXT
|
||||
glBegin
|
||||
glBindTexture
|
||||
glBindTextureEXT
|
||||
glBitmap
|
||||
glBlendColorEXT
|
||||
glBlendEquationEXT
|
||||
glBlendFunc
|
||||
glCallList
|
||||
glCallLists
|
||||
glClear
|
||||
glClearAccum
|
||||
glClearColor
|
||||
glClearDepth
|
||||
glClearIndex
|
||||
glClearStencil
|
||||
glClipPlane
|
||||
glColor3b
|
||||
glColor3bv
|
||||
glColor3d
|
||||
glColor3dv
|
||||
glColor3f
|
||||
glColor3fv
|
||||
glColor3i
|
||||
glColor3iv
|
||||
glColor3s
|
||||
glColor3sv
|
||||
glColor3ub
|
||||
glColor3ubv
|
||||
glColor3ui
|
||||
glColor3uiv
|
||||
glColor3us
|
||||
glColor3usv
|
||||
glColor4b
|
||||
glColor4bv
|
||||
glColor4d
|
||||
glColor4dv
|
||||
glColor4f
|
||||
glColor4fv
|
||||
glColor4i
|
||||
glColor4iv
|
||||
glColor4s
|
||||
glColor4sv
|
||||
glColor4ub
|
||||
glColor4ubv
|
||||
glColor4ui
|
||||
glColor4uiv
|
||||
glColor4us
|
||||
glColor4usv
|
||||
glColorMask
|
||||
glColorMaterial
|
||||
glColorPointer
|
||||
glColorPointerEXT
|
||||
glColorSubTableEXT
|
||||
glColorTableEXT
|
||||
glCopyPixels
|
||||
glCopyTexImage1D
|
||||
glCopyTexImage2D
|
||||
glCopyTexSubImage1D
|
||||
glCopyTexSubImage2D
|
||||
glCopyTexSubImage3DEXT
|
||||
glCullFace
|
||||
glDeleteLists
|
||||
glDeleteTextures
|
||||
glDeleteTexturesEXT
|
||||
glDepthFunc
|
||||
glDepthMask
|
||||
glDepthRange
|
||||
glDisable
|
||||
glDisableClientState
|
||||
glDrawArrays
|
||||
glDrawArraysEXT
|
||||
glDrawBuffer
|
||||
glDrawElements
|
||||
glDrawPixels
|
||||
glEdgeFlag
|
||||
glEdgeFlagPointer
|
||||
glEdgeFlagPointerEXT
|
||||
glEdgeFlagv
|
||||
glEnable
|
||||
glEnableClientState
|
||||
glEnd
|
||||
glEndList
|
||||
glEvalCoord1d
|
||||
glEvalCoord1dv
|
||||
glEvalCoord1f
|
||||
glEvalCoord1fv
|
||||
glEvalCoord2d
|
||||
glEvalCoord2dv
|
||||
glEvalCoord2f
|
||||
glEvalCoord2fv
|
||||
glEvalMesh1
|
||||
glEvalMesh2
|
||||
glEvalPoint1
|
||||
glEvalPoint2
|
||||
glFeedbackBuffer
|
||||
glFinish
|
||||
glFlush
|
||||
glFogf
|
||||
glFogfv
|
||||
glFogi
|
||||
glFogiv
|
||||
glFrontFace
|
||||
glFrustum
|
||||
glGenLists
|
||||
glGenTextures
|
||||
glGenTexturesEXT
|
||||
glGetBooleanv
|
||||
glGetClipPlane
|
||||
glGetColorTableEXT
|
||||
glGetColorTableParameterfvEXT
|
||||
glGetColorTableParameterivEXT
|
||||
glGetDoublev
|
||||
glGetError
|
||||
glGetFloatv
|
||||
glGetIntegerv
|
||||
glGetLightfv
|
||||
glGetLightiv
|
||||
glGetMapdv
|
||||
glGetMapfv
|
||||
glGetMapiv
|
||||
glGetMaterialfv
|
||||
glGetMaterialiv
|
||||
glGetPixelMapfv
|
||||
glGetPixelMapuiv
|
||||
glGetPixelMapusv
|
||||
glGetPointerv
|
||||
glGetPointervEXT
|
||||
glGetPolygonStipple
|
||||
glGetString
|
||||
glGetTexEnvfv
|
||||
glGetTexEnviv
|
||||
glGetTexGendv
|
||||
glGetTexGenfv
|
||||
glGetTexGeniv
|
||||
glGetTexImage
|
||||
glGetTexLevelParameterfv
|
||||
glGetTexLevelParameteriv
|
||||
glGetTexParameterfv
|
||||
glGetTexParameteriv
|
||||
glHint
|
||||
glIndexd
|
||||
glIndexdv
|
||||
glIndexf
|
||||
glIndexfv
|
||||
glIndexi
|
||||
glIndexiv
|
||||
glIndexMask
|
||||
glIndexPointer
|
||||
glIndexPointerEXT
|
||||
glIndexs
|
||||
glIndexsv
|
||||
glIndexub
|
||||
glIndexubv
|
||||
glInitNames
|
||||
glInterleavedArrays
|
||||
glIsEnabled
|
||||
glIsList
|
||||
glIsTexture
|
||||
glIsTextureEXT
|
||||
glLightf
|
||||
glLightfv
|
||||
glLighti
|
||||
glLightiv
|
||||
glLightModelf
|
||||
glLightModelfv
|
||||
glLightModeli
|
||||
glLightModeliv
|
||||
glLineStipple
|
||||
glLineWidth
|
||||
glListBase
|
||||
glLoadIdentity
|
||||
glLoadMatrixd
|
||||
glLoadMatrixf
|
||||
glLoadName
|
||||
glLogicOp
|
||||
glMap1d
|
||||
glMap1f
|
||||
glMap2d
|
||||
glMap2f
|
||||
glMapGrid1d
|
||||
glMapGrid1f
|
||||
glMapGrid2d
|
||||
glMapGrid2f
|
||||
glMaterialf
|
||||
glMaterialfv
|
||||
glMateriali
|
||||
glMaterialiv
|
||||
glMatrixMode
|
||||
glMultMatrixd
|
||||
glMultMatrixf
|
||||
glNewList
|
||||
glNormal3b
|
||||
glNormal3bv
|
||||
glNormal3d
|
||||
glNormal3dv
|
||||
glNormal3f
|
||||
glNormal3fv
|
||||
glNormal3i
|
||||
glNormal3iv
|
||||
glNormal3s
|
||||
glNormal3sv
|
||||
glNormalPointer
|
||||
glNormalPointerEXT
|
||||
glOrtho
|
||||
glPassThrough
|
||||
glPixelMapfv
|
||||
glPixelMapuiv
|
||||
glPixelMapusv
|
||||
glPixelStoref
|
||||
glPixelStorei
|
||||
glPixelTransferf
|
||||
glPixelTransferi
|
||||
glPixelZoom
|
||||
glPointParameterfEXT
|
||||
glPointParameterfvEXT
|
||||
glPointSize
|
||||
glPolygonMode
|
||||
glPolygonOffset
|
||||
glPolygonOffsetEXT
|
||||
glPolygonStipple
|
||||
glPopAttrib
|
||||
glPopClientAttrib
|
||||
glPopMatrix
|
||||
glPopName
|
||||
glPrioritizeTextures
|
||||
glPrioritizeTexturesEXT
|
||||
glPushAttrib
|
||||
glPushClientAttrib
|
||||
glPushMatrix
|
||||
glPushName
|
||||
glRasterPos2d
|
||||
glRasterPos2dv
|
||||
glRasterPos2f
|
||||
glRasterPos2fv
|
||||
glRasterPos2i
|
||||
glRasterPos2iv
|
||||
glRasterPos2s
|
||||
glRasterPos2sv
|
||||
glRasterPos3d
|
||||
glRasterPos3dv
|
||||
glRasterPos3f
|
||||
glRasterPos3fv
|
||||
glRasterPos3i
|
||||
glRasterPos3iv
|
||||
glRasterPos3s
|
||||
glRasterPos3sv
|
||||
glRasterPos4d
|
||||
glRasterPos4dv
|
||||
glRasterPos4f
|
||||
glRasterPos4fv
|
||||
glRasterPos4i
|
||||
glRasterPos4iv
|
||||
glRasterPos4s
|
||||
glRasterPos4sv
|
||||
glReadBuffer
|
||||
glReadPixels
|
||||
glRectd
|
||||
glRectdv
|
||||
glRectf
|
||||
glRectfv
|
||||
glRecti
|
||||
glRectiv
|
||||
glRects
|
||||
glRectsv
|
||||
glRenderMode
|
||||
glResizeBuffersMESA
|
||||
glRotated
|
||||
glRotatef
|
||||
glScaled
|
||||
glScalef
|
||||
glScissor
|
||||
glSelectBuffer
|
||||
glShadeModel
|
||||
glStencilFunc
|
||||
glStencilMask
|
||||
glStencilOp
|
||||
glTexCoord1d
|
||||
glTexCoord1dv
|
||||
glTexCoord1f
|
||||
glTexCoord1fv
|
||||
glTexCoord1i
|
||||
glTexCoord1iv
|
||||
glTexCoord1s
|
||||
glTexCoord1sv
|
||||
glTexCoord2d
|
||||
glTexCoord2dv
|
||||
glTexCoord2f
|
||||
glTexCoord2fv
|
||||
glTexCoord2i
|
||||
glTexCoord2iv
|
||||
glTexCoord2s
|
||||
glTexCoord2sv
|
||||
glTexCoord3d
|
||||
glTexCoord3dv
|
||||
glTexCoord3f
|
||||
glTexCoord3fv
|
||||
glTexCoord3i
|
||||
glTexCoord3iv
|
||||
glTexCoord3s
|
||||
glTexCoord3sv
|
||||
glTexCoord4d
|
||||
glTexCoord4dv
|
||||
glTexCoord4f
|
||||
glTexCoord4fv
|
||||
glTexCoord4i
|
||||
glTexCoord4iv
|
||||
glTexCoord4s
|
||||
glTexCoord4sv
|
||||
glTexCoordPointer
|
||||
glTexCoordPointerEXT
|
||||
glTexEnvf
|
||||
glTexEnvfv
|
||||
glTexEnvi
|
||||
glTexEnviv
|
||||
glTexGend
|
||||
glTexGendv
|
||||
glTexGenf
|
||||
glTexGenfv
|
||||
glTexGeni
|
||||
glTexGeniv
|
||||
glTexImage1D
|
||||
glTexImage2D
|
||||
glTexImage3DEXT
|
||||
glTexParameterf
|
||||
glTexParameterfv
|
||||
glTexParameteri
|
||||
glTexParameteriv
|
||||
glTexSubImage1D
|
||||
glTexSubImage2D
|
||||
glTexSubImage3DEXT
|
||||
glTranslated
|
||||
glTranslatef
|
||||
glVertex2d
|
||||
glVertex2dv
|
||||
glVertex2f
|
||||
glVertex2fv
|
||||
glVertex2i
|
||||
glVertex2iv
|
||||
glVertex2s
|
||||
glVertex2sv
|
||||
glVertex3d
|
||||
glVertex3dv
|
||||
glVertex3f
|
||||
glVertex3fv
|
||||
glVertex3i
|
||||
glVertex3iv
|
||||
glVertex3s
|
||||
glVertex3sv
|
||||
glVertex4d
|
||||
glVertex4dv
|
||||
glVertex4f
|
||||
glVertex4fv
|
||||
glVertex4i
|
||||
glVertex4iv
|
||||
glVertex4s
|
||||
glVertex4sv
|
||||
glVertexPointer
|
||||
glVertexPointerEXT
|
||||
glViewport
|
||||
glWindowPos2dMESA
|
||||
glWindowPos2dvMESA
|
||||
glWindowPos2fMESA
|
||||
glWindowPos2fvMESA
|
||||
glWindowPos2iMESA
|
||||
glWindowPos2ivMESA
|
||||
glWindowPos2sMESA
|
||||
glWindowPos2svMESA
|
||||
glWindowPos3dMESA
|
||||
glWindowPos3dvMESA
|
||||
glWindowPos3fMESA
|
||||
glWindowPos3fvMESA
|
||||
glWindowPos3iMESA
|
||||
glWindowPos3ivMESA
|
||||
glWindowPos3sMESA
|
||||
glWindowPos3svMESA
|
||||
glWindowPos4dMESA
|
||||
glWindowPos4dvMESA
|
||||
glWindowPos4fMESA
|
||||
glWindowPos4fvMESA
|
||||
glWindowPos4iMESA
|
||||
glWindowPos4ivMESA
|
||||
glWindowPos4sMESA
|
||||
glWindowPos4svMESA
|
||||
; WMesaCreateContext
|
||||
; WMesaDestroyContext
|
||||
; WMesaMakeCurrent
|
||||
; WMesaPaletteChange
|
||||
; WMesaSwapBuffers
|
||||
; OSMesaCreateContext
|
||||
; OSMesaDestroyContext
|
||||
; OSMesaMakeCurrent
|
||||
; OSMesaGetCurrentContext
|
||||
; OSMesaPixelStore
|
||||
; OSMesaGetIntegerv
|
||||
; OSMesaGetDepthBuffer
|
||||
wglCopyContext
|
||||
wglCreateContext
|
||||
wglCreateLayerContext
|
||||
wglDeleteContext
|
||||
; wglDescribeLayerPlane
|
||||
wglGetCurrentContext
|
||||
wglGetCurrentDC
|
||||
; wglGetLayerPaletteEntries
|
||||
wglGetProcAddress
|
||||
wglMakeCurrent
|
||||
; wglRealizeLayerPalette
|
||||
; wglSetLayerPaletteEntries
|
||||
wglShareLists
|
||||
wglSwapLayerBuffers
|
||||
wglUseFontBitmapsA
|
||||
wglUseFontBitmapsW
|
||||
wglUseFontOutlinesA
|
||||
wglUseFontOutlinesW
|
||||
wglChoosePixelFormat
|
||||
wglDescribePixelFormat
|
||||
wglGetPixelFormat
|
||||
wglSetPixelFormat
|
||||
wglSwapBuffers
|
||||
|
||||
|
||||
|
||||
;===========================================================================
|
||||
;
|
||||
; Mesa-3.0 DirectX 6 Driver
|
||||
;
|
||||
; By Leigh McRae
|
||||
;
|
||||
; http://www.altsoftware.com/
|
||||
;
|
||||
; Copyright (c) 1999-1998 alt.software inc. All Rights Reserved
|
||||
;===========================================================================
|
||||
NAME OpenGL32.DLL
|
||||
DESCRIPTION "Mesa-3.0 DX6 Driver Version 0.5"
|
||||
|
||||
EXPORTS
|
||||
DllMain
|
||||
glAccum
|
||||
glAlphaFunc
|
||||
glAreTexturesResident
|
||||
glAreTexturesResidentEXT
|
||||
glArrayElement
|
||||
glArrayElementEXT
|
||||
glBegin
|
||||
glBindTexture
|
||||
glBindTextureEXT
|
||||
glBitmap
|
||||
glBlendColorEXT
|
||||
glBlendEquationEXT
|
||||
glBlendFunc
|
||||
glCallList
|
||||
glCallLists
|
||||
glClear
|
||||
glClearAccum
|
||||
glClearColor
|
||||
glClearDepth
|
||||
glClearIndex
|
||||
glClearStencil
|
||||
glClipPlane
|
||||
glColor3b
|
||||
glColor3bv
|
||||
glColor3d
|
||||
glColor3dv
|
||||
glColor3f
|
||||
glColor3fv
|
||||
glColor3i
|
||||
glColor3iv
|
||||
glColor3s
|
||||
glColor3sv
|
||||
glColor3ub
|
||||
glColor3ubv
|
||||
glColor3ui
|
||||
glColor3uiv
|
||||
glColor3us
|
||||
glColor3usv
|
||||
glColor4b
|
||||
glColor4bv
|
||||
glColor4d
|
||||
glColor4dv
|
||||
glColor4f
|
||||
glColor4fv
|
||||
glColor4i
|
||||
glColor4iv
|
||||
glColor4s
|
||||
glColor4sv
|
||||
glColor4ub
|
||||
glColor4ubv
|
||||
glColor4ui
|
||||
glColor4uiv
|
||||
glColor4us
|
||||
glColor4usv
|
||||
glColorMask
|
||||
glColorMaterial
|
||||
glColorPointer
|
||||
glColorPointerEXT
|
||||
glColorSubTableEXT
|
||||
glColorTableEXT
|
||||
glCopyPixels
|
||||
glCopyTexImage1D
|
||||
glCopyTexImage2D
|
||||
glCopyTexSubImage1D
|
||||
glCopyTexSubImage2D
|
||||
glCopyTexSubImage3DEXT
|
||||
glCullFace
|
||||
glDeleteLists
|
||||
glDeleteTextures
|
||||
glDeleteTexturesEXT
|
||||
glDepthFunc
|
||||
glDepthMask
|
||||
glDepthRange
|
||||
glDisable
|
||||
glDisableClientState
|
||||
glDrawArrays
|
||||
glDrawArraysEXT
|
||||
glDrawBuffer
|
||||
glDrawElements
|
||||
glDrawPixels
|
||||
glEdgeFlag
|
||||
glEdgeFlagPointer
|
||||
glEdgeFlagPointerEXT
|
||||
glEdgeFlagv
|
||||
glEnable
|
||||
glEnableClientState
|
||||
glEnd
|
||||
glEndList
|
||||
glEvalCoord1d
|
||||
glEvalCoord1dv
|
||||
glEvalCoord1f
|
||||
glEvalCoord1fv
|
||||
glEvalCoord2d
|
||||
glEvalCoord2dv
|
||||
glEvalCoord2f
|
||||
glEvalCoord2fv
|
||||
glEvalMesh1
|
||||
glEvalMesh2
|
||||
glEvalPoint1
|
||||
glEvalPoint2
|
||||
glFeedbackBuffer
|
||||
glFinish
|
||||
glFlush
|
||||
glFogf
|
||||
glFogfv
|
||||
glFogi
|
||||
glFogiv
|
||||
glFrontFace
|
||||
glFrustum
|
||||
glGenLists
|
||||
glGenTextures
|
||||
glGenTexturesEXT
|
||||
glGetBooleanv
|
||||
glGetClipPlane
|
||||
glGetColorTableEXT
|
||||
glGetColorTableParameterfvEXT
|
||||
glGetColorTableParameterivEXT
|
||||
glGetDoublev
|
||||
glGetError
|
||||
glGetFloatv
|
||||
glGetIntegerv
|
||||
glGetLightfv
|
||||
glGetLightiv
|
||||
glGetMapdv
|
||||
glGetMapfv
|
||||
glGetMapiv
|
||||
glGetMaterialfv
|
||||
glGetMaterialiv
|
||||
glGetPixelMapfv
|
||||
glGetPixelMapuiv
|
||||
glGetPixelMapusv
|
||||
glGetPointerv
|
||||
glGetPointervEXT
|
||||
glGetPolygonStipple
|
||||
glGetString
|
||||
glGetTexEnvfv
|
||||
glGetTexEnviv
|
||||
glGetTexGendv
|
||||
glGetTexGenfv
|
||||
glGetTexGeniv
|
||||
glGetTexImage
|
||||
glGetTexLevelParameterfv
|
||||
glGetTexLevelParameteriv
|
||||
glGetTexParameterfv
|
||||
glGetTexParameteriv
|
||||
glHint
|
||||
glIndexd
|
||||
glIndexdv
|
||||
glIndexf
|
||||
glIndexfv
|
||||
glIndexi
|
||||
glIndexiv
|
||||
glIndexMask
|
||||
glIndexPointer
|
||||
glIndexPointerEXT
|
||||
glIndexs
|
||||
glIndexsv
|
||||
glIndexub
|
||||
glIndexubv
|
||||
glInitNames
|
||||
glInterleavedArrays
|
||||
glIsEnabled
|
||||
glIsList
|
||||
glIsTexture
|
||||
glIsTextureEXT
|
||||
glLightf
|
||||
glLightfv
|
||||
glLighti
|
||||
glLightiv
|
||||
glLightModelf
|
||||
glLightModelfv
|
||||
glLightModeli
|
||||
glLightModeliv
|
||||
glLineStipple
|
||||
glLineWidth
|
||||
glListBase
|
||||
glLoadIdentity
|
||||
glLoadMatrixd
|
||||
glLoadMatrixf
|
||||
glLoadName
|
||||
glLogicOp
|
||||
glMap1d
|
||||
glMap1f
|
||||
glMap2d
|
||||
glMap2f
|
||||
glMapGrid1d
|
||||
glMapGrid1f
|
||||
glMapGrid2d
|
||||
glMapGrid2f
|
||||
glMaterialf
|
||||
glMaterialfv
|
||||
glMateriali
|
||||
glMaterialiv
|
||||
glMatrixMode
|
||||
glMultMatrixd
|
||||
glMultMatrixf
|
||||
glNewList
|
||||
glNormal3b
|
||||
glNormal3bv
|
||||
glNormal3d
|
||||
glNormal3dv
|
||||
glNormal3f
|
||||
glNormal3fv
|
||||
glNormal3i
|
||||
glNormal3iv
|
||||
glNormal3s
|
||||
glNormal3sv
|
||||
glNormalPointer
|
||||
glNormalPointerEXT
|
||||
glOrtho
|
||||
glPassThrough
|
||||
glPixelMapfv
|
||||
glPixelMapuiv
|
||||
glPixelMapusv
|
||||
glPixelStoref
|
||||
glPixelStorei
|
||||
glPixelTransferf
|
||||
glPixelTransferi
|
||||
glPixelZoom
|
||||
glPointParameterfEXT
|
||||
glPointParameterfvEXT
|
||||
glPointSize
|
||||
glPolygonMode
|
||||
glPolygonOffset
|
||||
glPolygonOffsetEXT
|
||||
glPolygonStipple
|
||||
glPopAttrib
|
||||
glPopClientAttrib
|
||||
glPopMatrix
|
||||
glPopName
|
||||
glPrioritizeTextures
|
||||
glPrioritizeTexturesEXT
|
||||
glPushAttrib
|
||||
glPushClientAttrib
|
||||
glPushMatrix
|
||||
glPushName
|
||||
glRasterPos2d
|
||||
glRasterPos2dv
|
||||
glRasterPos2f
|
||||
glRasterPos2fv
|
||||
glRasterPos2i
|
||||
glRasterPos2iv
|
||||
glRasterPos2s
|
||||
glRasterPos2sv
|
||||
glRasterPos3d
|
||||
glRasterPos3dv
|
||||
glRasterPos3f
|
||||
glRasterPos3fv
|
||||
glRasterPos3i
|
||||
glRasterPos3iv
|
||||
glRasterPos3s
|
||||
glRasterPos3sv
|
||||
glRasterPos4d
|
||||
glRasterPos4dv
|
||||
glRasterPos4f
|
||||
glRasterPos4fv
|
||||
glRasterPos4i
|
||||
glRasterPos4iv
|
||||
glRasterPos4s
|
||||
glRasterPos4sv
|
||||
glReadBuffer
|
||||
glReadPixels
|
||||
glRectd
|
||||
glRectdv
|
||||
glRectf
|
||||
glRectfv
|
||||
glRecti
|
||||
glRectiv
|
||||
glRects
|
||||
glRectsv
|
||||
glRenderMode
|
||||
glResizeBuffersMESA
|
||||
glRotated
|
||||
glRotatef
|
||||
glScaled
|
||||
glScalef
|
||||
glScissor
|
||||
glSelectBuffer
|
||||
glShadeModel
|
||||
glStencilFunc
|
||||
glStencilMask
|
||||
glStencilOp
|
||||
glTexCoord1d
|
||||
glTexCoord1dv
|
||||
glTexCoord1f
|
||||
glTexCoord1fv
|
||||
glTexCoord1i
|
||||
glTexCoord1iv
|
||||
glTexCoord1s
|
||||
glTexCoord1sv
|
||||
glTexCoord2d
|
||||
glTexCoord2dv
|
||||
glTexCoord2f
|
||||
glTexCoord2fv
|
||||
glTexCoord2i
|
||||
glTexCoord2iv
|
||||
glTexCoord2s
|
||||
glTexCoord2sv
|
||||
glTexCoord3d
|
||||
glTexCoord3dv
|
||||
glTexCoord3f
|
||||
glTexCoord3fv
|
||||
glTexCoord3i
|
||||
glTexCoord3iv
|
||||
glTexCoord3s
|
||||
glTexCoord3sv
|
||||
glTexCoord4d
|
||||
glTexCoord4dv
|
||||
glTexCoord4f
|
||||
glTexCoord4fv
|
||||
glTexCoord4i
|
||||
glTexCoord4iv
|
||||
glTexCoord4s
|
||||
glTexCoord4sv
|
||||
glTexCoordPointer
|
||||
glTexCoordPointerEXT
|
||||
glTexEnvf
|
||||
glTexEnvfv
|
||||
glTexEnvi
|
||||
glTexEnviv
|
||||
glTexGend
|
||||
glTexGendv
|
||||
glTexGenf
|
||||
glTexGenfv
|
||||
glTexGeni
|
||||
glTexGeniv
|
||||
glTexImage1D
|
||||
glTexImage2D
|
||||
glTexImage3DEXT
|
||||
glTexParameterf
|
||||
glTexParameterfv
|
||||
glTexParameteri
|
||||
glTexParameteriv
|
||||
glTexSubImage1D
|
||||
glTexSubImage2D
|
||||
glTexSubImage3DEXT
|
||||
glTranslated
|
||||
glTranslatef
|
||||
glVertex2d
|
||||
glVertex2dv
|
||||
glVertex2f
|
||||
glVertex2fv
|
||||
glVertex2i
|
||||
glVertex2iv
|
||||
glVertex2s
|
||||
glVertex2sv
|
||||
glVertex3d
|
||||
glVertex3dv
|
||||
glVertex3f
|
||||
glVertex3fv
|
||||
glVertex3i
|
||||
glVertex3iv
|
||||
glVertex3s
|
||||
glVertex3sv
|
||||
glVertex4d
|
||||
glVertex4dv
|
||||
glVertex4f
|
||||
glVertex4fv
|
||||
glVertex4i
|
||||
glVertex4iv
|
||||
glVertex4s
|
||||
glVertex4sv
|
||||
glVertexPointer
|
||||
glVertexPointerEXT
|
||||
glViewport
|
||||
glWindowPos2dMESA
|
||||
glWindowPos2dvMESA
|
||||
glWindowPos2fMESA
|
||||
glWindowPos2fvMESA
|
||||
glWindowPos2iMESA
|
||||
glWindowPos2ivMESA
|
||||
glWindowPos2sMESA
|
||||
glWindowPos2svMESA
|
||||
glWindowPos3dMESA
|
||||
glWindowPos3dvMESA
|
||||
glWindowPos3fMESA
|
||||
glWindowPos3fvMESA
|
||||
glWindowPos3iMESA
|
||||
glWindowPos3ivMESA
|
||||
glWindowPos3sMESA
|
||||
glWindowPos3svMESA
|
||||
glWindowPos4dMESA
|
||||
glWindowPos4dvMESA
|
||||
glWindowPos4fMESA
|
||||
glWindowPos4fvMESA
|
||||
glWindowPos4iMESA
|
||||
glWindowPos4ivMESA
|
||||
glWindowPos4sMESA
|
||||
glWindowPos4svMESA
|
||||
; WMesaCreateContext
|
||||
; WMesaDestroyContext
|
||||
; WMesaMakeCurrent
|
||||
; WMesaPaletteChange
|
||||
; WMesaSwapBuffers
|
||||
; OSMesaCreateContext
|
||||
; OSMesaDestroyContext
|
||||
; OSMesaMakeCurrent
|
||||
; OSMesaGetCurrentContext
|
||||
; OSMesaPixelStore
|
||||
; OSMesaGetIntegerv
|
||||
; OSMesaGetDepthBuffer
|
||||
wglCopyContext
|
||||
wglCreateContext
|
||||
wglCreateLayerContext
|
||||
wglDeleteContext
|
||||
; wglDescribeLayerPlane
|
||||
wglGetCurrentContext
|
||||
wglGetCurrentDC
|
||||
; wglGetLayerPaletteEntries
|
||||
wglGetProcAddress
|
||||
wglMakeCurrent
|
||||
; wglRealizeLayerPalette
|
||||
; wglSetLayerPaletteEntries
|
||||
wglShareLists
|
||||
wglSwapLayerBuffers
|
||||
wglUseFontBitmapsA
|
||||
wglUseFontBitmapsW
|
||||
wglUseFontOutlinesA
|
||||
wglUseFontOutlinesW
|
||||
wglChoosePixelFormat
|
||||
wglDescribePixelFormat
|
||||
wglGetPixelFormat
|
||||
wglSetPixelFormat
|
||||
wglSwapBuffers
|
||||
|
||||
|
||||
|
||||
|
|
File diff suppressed because it is too large
Load Diff
Loading…
Reference in New Issue