Glitch64: Add raw code to project
This commit is contained in:
parent
b999946d15
commit
4d45d46270
|
@ -0,0 +1,89 @@
|
||||||
|
#define grAADrawTriangle _grAADrawTriangle
|
||||||
|
#define grAlphaBlendFunction _grAlphaBlendFunction
|
||||||
|
#define grAlphaCombine _grAlphaCombine
|
||||||
|
#define grAlphaControlsITRGBLighting _grAlphaControlsITRGBLighting
|
||||||
|
#define grAlphaTestFunction _grAlphaTestFunction
|
||||||
|
#define grAlphaTestReferenceValue _grAlphaTestReferenceValue
|
||||||
|
#define grBufferClear _grBufferClear
|
||||||
|
#define grBufferSwap _grBufferSwap
|
||||||
|
#define grChromakeyMode _grChromakeyMode
|
||||||
|
#define grChromakeyValue _grChromakeyValue
|
||||||
|
#define grClipWindow _grClipWindow
|
||||||
|
#define grColorCombine _grColorCombine
|
||||||
|
#define grColorMask _grColorMask
|
||||||
|
#define grConstantColorValue _grConstantColorValue
|
||||||
|
#define grCoordinateSpace _grCoordinateSpace
|
||||||
|
#define grCullMode _grCullMode
|
||||||
|
#define grDepthBiasLevel _grDepthBiasLevel
|
||||||
|
#define grDepthBufferFunction _grDepthBufferFunction
|
||||||
|
#define grDepthBufferMode _grDepthBufferMode
|
||||||
|
#define grDepthMask _grDepthMask
|
||||||
|
#define grDepthRange _grDepthRange
|
||||||
|
#define grDisable _grDisable
|
||||||
|
#define grDisableAllEffects _grDisableAllEffects
|
||||||
|
#define grDitherMode _grDitherMode
|
||||||
|
#define grDrawLine _grDrawLine
|
||||||
|
#define grDrawPoint _grDrawPoint
|
||||||
|
#define grDrawTriangle _grDrawTriangle
|
||||||
|
#define grDrawVertexArray _grDrawVertexArray
|
||||||
|
#define grDrawVertexArrayContiguous _grDrawVertexArrayContiguous
|
||||||
|
#define grEnable _grEnable
|
||||||
|
#define grErrorSetCallback _grErrorSetCallback
|
||||||
|
#define grFinish _grFinish
|
||||||
|
#define grFlush _grFlush
|
||||||
|
#define grFogColorValue _grFogColorValue
|
||||||
|
#define grFogMode _grFogMode
|
||||||
|
#define grFogTable _grFogTable
|
||||||
|
#define grGet _grGet
|
||||||
|
#define grGetProcAddress _grGetProcAddress
|
||||||
|
#define grGetString _grGetString
|
||||||
|
#define grGlideGetState _grGlideGetState
|
||||||
|
#define grGlideGetVertexLayout _grGlideGetVertexLayout
|
||||||
|
#define grGlideInit _grGlideInit
|
||||||
|
#define grGlideSetState _grGlideSetState
|
||||||
|
#define grGlideSetVertexLayout _grGlideSetVertexLayout
|
||||||
|
#define grGlideShutdown _grGlideShutdown
|
||||||
|
#define grLfbConstantAlpha _grLfbConstantAlpha
|
||||||
|
#define grLfbConstantDepth _grLfbConstantDepth
|
||||||
|
#define grLfbLock _grLfbLock
|
||||||
|
#define grLfbReadRegion _grLfbReadRegion
|
||||||
|
#define grLfbUnlock _grLfbUnlock
|
||||||
|
#define grLfbWriteColorFormat _grLfbWriteColorFormat
|
||||||
|
#define grLfbWriteColorSwizzle _grLfbWriteColorSwizzle
|
||||||
|
#define grLfbWriteRegion _grLfbWriteRegion
|
||||||
|
#define grLoadGammaTable _grLoadGammaTable
|
||||||
|
#define grQueryResolutions _grQueryResolutions
|
||||||
|
#define grRenderBuffer _grRenderBuffer
|
||||||
|
#define grReset _grReset
|
||||||
|
#define grSelectContext _grSelectContext
|
||||||
|
#define grSplash _grSplash
|
||||||
|
#define grSstOrigin _grSstOrigin
|
||||||
|
#define grSstSelect _grSstSelect
|
||||||
|
#define grSstWinClose _grSstWinClose
|
||||||
|
#define grSstWinOpen _grSstWinOpen
|
||||||
|
#define grStippleMode _grStippleMode
|
||||||
|
#define grStipplePattern _grStipplePattern
|
||||||
|
#define grTexCalcMemRequired _grTexCalcMemRequired
|
||||||
|
#define grTexClampMode _grTexClampMode
|
||||||
|
#define grTexCombine _grTexCombine
|
||||||
|
#define grTexDetailControl _grTexDetailControl
|
||||||
|
#define grTexDownloadMipMap _grTexDownloadMipMap
|
||||||
|
#define grTexDownloadMipMapLevel _grTexDownloadMipMapLevel
|
||||||
|
#define grTexDownloadMipMapLevelPartial _grTexDownloadMipMapLevelPartial
|
||||||
|
#define grTexDownloadTable _grTexDownloadTable
|
||||||
|
#define grTexDownloadTablePartial _grTexDownloadTablePartial
|
||||||
|
#define grTexFilterMode _grTexFilterMode
|
||||||
|
#define grTexLodBiasValue _grTexLodBiasValue
|
||||||
|
#define grTexMaxAddress _grTexMaxAddress
|
||||||
|
#define grTexMinAddress _grTexMinAddress
|
||||||
|
#define grTexMipMapMode _grTexMipMapMode
|
||||||
|
#define grTexMultibase _grTexMultibase
|
||||||
|
#define grTexMultibaseAddress _grTexMultibaseAddress
|
||||||
|
#define grTexNCCTable _grTexNCCTable
|
||||||
|
#define grTexSource _grTexSource
|
||||||
|
#define grTexTextureMemRequired _grTexTextureMemRequired
|
||||||
|
#define grVertexLayout _grVertexLayout
|
||||||
|
#define grViewport _grViewport
|
||||||
|
#define guFogGenerateLinear _guFogGenerateLinear
|
||||||
|
#define guFogTableIndexToW _guFogTableIndexToW
|
||||||
|
#define guGammaCorrectionRGB _guGammaCorrectionRGB
|
|
@ -0,0 +1,75 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
|
||||||
|
<CodeBlocks_project_file>
|
||||||
|
<FileVersion major="1" minor="6" />
|
||||||
|
<Project>
|
||||||
|
<Option title="Glitch64" />
|
||||||
|
<Option pch_mode="2" />
|
||||||
|
<Option compiler="gcc" />
|
||||||
|
<Build>
|
||||||
|
<Target title="Debug">
|
||||||
|
<Option output="bin\Glitch64" prefix_auto="1" extension_auto="1" />
|
||||||
|
<Option object_output="obj\Debug\" />
|
||||||
|
<Option type="3" />
|
||||||
|
<Option compiler="gcc" />
|
||||||
|
<Option createDefFile="1" />
|
||||||
|
<Option createStaticLib="1" />
|
||||||
|
<Compiler>
|
||||||
|
<Add option="-Wall" />
|
||||||
|
<Add option="-g" />
|
||||||
|
<Add option="-DBUILD_DLL" />
|
||||||
|
<Add directory="..\inc" />
|
||||||
|
</Compiler>
|
||||||
|
<Linker>
|
||||||
|
<Add library="user32" />
|
||||||
|
<Add directory="..\lib" />
|
||||||
|
</Linker>
|
||||||
|
</Target>
|
||||||
|
<Target title="Release">
|
||||||
|
<Option output="bin\Glitch64" prefix_auto="1" extension_auto="1" />
|
||||||
|
<Option object_output="obj\Release\" />
|
||||||
|
<Option type="3" />
|
||||||
|
<Option compiler="gcc" />
|
||||||
|
<Option createDefFile="1" />
|
||||||
|
<Option createStaticLib="1" />
|
||||||
|
<Compiler>
|
||||||
|
<Add option="-O2" />
|
||||||
|
<Add option="-Wall" />
|
||||||
|
<Add option="-DBUILD_DLL" />
|
||||||
|
<Add option="-DGLIDE3X_EXPORTS" />
|
||||||
|
</Compiler>
|
||||||
|
<Linker>
|
||||||
|
<Add option="-s" />
|
||||||
|
<Add library="user32" />
|
||||||
|
</Linker>
|
||||||
|
</Target>
|
||||||
|
</Build>
|
||||||
|
<Compiler>
|
||||||
|
<Add option="-DWIN32" />
|
||||||
|
<Add option="-DWINDOWS" />
|
||||||
|
<Add option="-D_USRDLL" />
|
||||||
|
<Add option="-DGLIDEXPORT" />
|
||||||
|
<Add directory="..\inc" />
|
||||||
|
</Compiler>
|
||||||
|
<Linker>
|
||||||
|
<Add option="-lopengl32" />
|
||||||
|
<Add option="-lglu32" />
|
||||||
|
<Add option="-lgdi32" />
|
||||||
|
<Add option="-ldxguid" />
|
||||||
|
<Add option="-lole32" />
|
||||||
|
<Add option="-loleaut32" />
|
||||||
|
<Add directory="..\lib" />
|
||||||
|
</Linker>
|
||||||
|
<Unit filename="..\3dfx-mangling.h" />
|
||||||
|
<Unit filename="..\combiner.cpp" />
|
||||||
|
<Unit filename="..\geometry.cpp" />
|
||||||
|
<Unit filename="..\main.cpp" />
|
||||||
|
<Unit filename="..\main.h" />
|
||||||
|
<Unit filename="..\textures.cpp" />
|
||||||
|
<Unit filename="..\vram.cpp" />
|
||||||
|
<Extensions>
|
||||||
|
<code_completion />
|
||||||
|
<envvars />
|
||||||
|
<debugger />
|
||||||
|
</Extensions>
|
||||||
|
</Project>
|
||||||
|
</CodeBlocks_project_file>
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,10 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
|
||||||
|
<assembly xmlns="urn:schemas-microsoft-com:asm.v1" manifestVersion="1.0">
|
||||||
|
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||||
|
<security>
|
||||||
|
<requestedPrivileges>
|
||||||
|
<requestedExecutionLevel level="asInvoker" uiAccess="false"></requestedExecutionLevel>
|
||||||
|
</requestedPrivileges>
|
||||||
|
</security>
|
||||||
|
</trustInfo>
|
||||||
|
</assembly>
|
Binary file not shown.
|
@ -0,0 +1,10 @@
|
||||||
|
<?xml version='1.0' encoding='UTF-8' standalone='yes'?>
|
||||||
|
<assembly xmlns='urn:schemas-microsoft-com:asm.v1' manifestVersion='1.0'>
|
||||||
|
<trustInfo xmlns="urn:schemas-microsoft-com:asm.v3">
|
||||||
|
<security>
|
||||||
|
<requestedPrivileges>
|
||||||
|
<requestedExecutionLevel level='asInvoker' uiAccess='false' />
|
||||||
|
</requestedPrivileges>
|
||||||
|
</security>
|
||||||
|
</trustInfo>
|
||||||
|
</assembly>
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1 @@
|
||||||
|
Manifest resource last updated at 6:38:20.94 on Fri 05/04/2013
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -0,0 +1,256 @@
|
||||||
|
<?xml version="1.0" encoding="windows-1251"?>
|
||||||
|
<VisualStudioProject
|
||||||
|
ProjectType="Visual C++"
|
||||||
|
Version="8.00"
|
||||||
|
Name="Glitch64"
|
||||||
|
ProjectGUID="{462C2608-182F-452C-944F-AF201E19300B}"
|
||||||
|
RootNamespace="glide3x"
|
||||||
|
>
|
||||||
|
<Platforms>
|
||||||
|
<Platform
|
||||||
|
Name="Win32"
|
||||||
|
/>
|
||||||
|
</Platforms>
|
||||||
|
<ToolFiles>
|
||||||
|
</ToolFiles>
|
||||||
|
<Configurations>
|
||||||
|
<Configuration
|
||||||
|
Name="Debug|Win32"
|
||||||
|
OutputDirectory=".\Debug"
|
||||||
|
IntermediateDirectory=".\Debug"
|
||||||
|
ConfigurationType="2"
|
||||||
|
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||||
|
UseOfMFC="0"
|
||||||
|
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||||
|
CharacterSet="2"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
PreprocessorDefinitions="_DEBUG"
|
||||||
|
MkTypLibCompatible="true"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
TargetEnvironment="1"
|
||||||
|
TypeLibraryName=".\Debug/glide3x.tlb"
|
||||||
|
HeaderFileName=""
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="0"
|
||||||
|
AdditionalIncludeDirectories="..\inc"
|
||||||
|
PreprocessorDefinitions="_DEBUG;_CRT_SECURE_NO_WARNINGS;WIN32;WINDOWS;_USRDLL;GLIDE3X_EXPORTS;__MSC__"
|
||||||
|
MinimalRebuild="true"
|
||||||
|
BasicRuntimeChecks="3"
|
||||||
|
RuntimeLibrary="1"
|
||||||
|
PrecompiledHeaderFile=".\Debug/glide3x.pch"
|
||||||
|
AssemblerListingLocation=".\Debug/"
|
||||||
|
ObjectFile=".\Debug/"
|
||||||
|
ProgramDataBaseFileName=".\Debug/"
|
||||||
|
WarningLevel="3"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
DebugInformationFormat="4"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
PreprocessorDefinitions="_DEBUG"
|
||||||
|
Culture="1036"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies="odbc32.lib odbccp32.lib opengl32.lib glu32.lib"
|
||||||
|
OutputFile="$(OutDir)\glide3x.dll"
|
||||||
|
LinkIncremental="2"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
AdditionalLibraryDirectories="..\lib"
|
||||||
|
GenerateDebugInformation="true"
|
||||||
|
ProgramDatabaseFile=".\Debug/glide3x.pdb"
|
||||||
|
ImportLibrary=".\Debug/glide3x.lib"
|
||||||
|
TargetMachine="1"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
OutputFile=".\Debug/glide3x.bsc"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebDeploymentTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
<Configuration
|
||||||
|
Name="Release|Win32"
|
||||||
|
OutputDirectory=".\Release"
|
||||||
|
IntermediateDirectory=".\Release"
|
||||||
|
ConfigurationType="2"
|
||||||
|
InheritedPropertySheets="$(VCInstallDir)VCProjectDefaults\UpgradeFromVC60.vsprops"
|
||||||
|
UseOfMFC="0"
|
||||||
|
ATLMinimizesCRunTimeLibraryUsage="false"
|
||||||
|
CharacterSet="2"
|
||||||
|
>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreBuildEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCustomBuildTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXMLDataGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebServiceProxyGeneratorTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCMIDLTool"
|
||||||
|
PreprocessorDefinitions="NDEBUG"
|
||||||
|
MkTypLibCompatible="true"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
TargetEnvironment="1"
|
||||||
|
TypeLibraryName=".\Release/glide3x.tlb"
|
||||||
|
HeaderFileName=""
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCCLCompilerTool"
|
||||||
|
Optimization="2"
|
||||||
|
InlineFunctionExpansion="1"
|
||||||
|
AdditionalIncludeDirectories="..\inc"
|
||||||
|
PreprocessorDefinitions="_CRT_SECURE_NO_WARNINGS; WIN32;WINDOWS;_USRDLL;GLIDE3X_EXPORTS;__MSC__"
|
||||||
|
StringPooling="true"
|
||||||
|
RuntimeLibrary="0"
|
||||||
|
EnableFunctionLevelLinking="true"
|
||||||
|
PrecompiledHeaderFile=".\Release/glide3x.pch"
|
||||||
|
AssemblerListingLocation=".\Release/"
|
||||||
|
ObjectFile=".\Release/"
|
||||||
|
ProgramDataBaseFileName=".\Release/"
|
||||||
|
BrowseInformation="1"
|
||||||
|
WarningLevel="3"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManagedResourceCompilerTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCResourceCompilerTool"
|
||||||
|
PreprocessorDefinitions="NDEBUG"
|
||||||
|
Culture="1036"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPreLinkEventTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCLinkerTool"
|
||||||
|
AdditionalDependencies="opengl32.lib glu32.lib"
|
||||||
|
OutputFile="$(OutDir)\glide3x.dll"
|
||||||
|
LinkIncremental="1"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
AdditionalLibraryDirectories="..\lib"
|
||||||
|
ProgramDatabaseFile=".\Release/glide3x.pdb"
|
||||||
|
ImportLibrary=".\Release/glide3x.lib"
|
||||||
|
TargetMachine="1"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCALinkTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCManifestTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCXDCMakeTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCBscMakeTool"
|
||||||
|
SuppressStartupBanner="true"
|
||||||
|
OutputFile=".\Release/glide3x.bsc"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCFxCopTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCAppVerifierTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCWebDeploymentTool"
|
||||||
|
/>
|
||||||
|
<Tool
|
||||||
|
Name="VCPostBuildEventTool"
|
||||||
|
/>
|
||||||
|
</Configuration>
|
||||||
|
</Configurations>
|
||||||
|
<References>
|
||||||
|
</References>
|
||||||
|
<Files>
|
||||||
|
<Filter
|
||||||
|
Name="Headers"
|
||||||
|
Filter="*.h"
|
||||||
|
>
|
||||||
|
<File
|
||||||
|
RelativePath="..\3dfx-mangling.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\main.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
</Filter>
|
||||||
|
<Filter
|
||||||
|
Name="Source Files"
|
||||||
|
Filter="*.cpp"
|
||||||
|
>
|
||||||
|
<File
|
||||||
|
RelativePath="..\combiner.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\geometry.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\main.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\textures.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\vram.cpp"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
|
</Filter>
|
||||||
|
</Files>
|
||||||
|
<Globals>
|
||||||
|
</Globals>
|
||||||
|
</VisualStudioProject>
|
|
@ -0,0 +1,134 @@
|
||||||
|
# This MUST be processed by GNU make
|
||||||
|
#
|
||||||
|
# Glitch64 Makefile
|
||||||
|
# Version: 1.0
|
||||||
|
#
|
||||||
|
# this is free software; you can redistribute it and/or modify
|
||||||
|
# it under the terms of the GNU General Public License as published by
|
||||||
|
# the Free Software Foundation; either version 2, or (at your option)
|
||||||
|
# any later version.
|
||||||
|
#
|
||||||
|
# this 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 General Public License for more details.
|
||||||
|
#
|
||||||
|
# You should have received a copy of the GNU General Public License
|
||||||
|
# along with GNU Make; see the file COPYING. If not, write to
|
||||||
|
# the Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
|
||||||
|
#
|
||||||
|
|
||||||
|
#
|
||||||
|
# Available options:
|
||||||
|
#
|
||||||
|
# Environment variables:
|
||||||
|
# DEBUG=1 enable debugging checks and messages
|
||||||
|
# default = no
|
||||||
|
#
|
||||||
|
# Environment variables:
|
||||||
|
#
|
||||||
|
# Targets:
|
||||||
|
# all: build dynamic module
|
||||||
|
# clean: remove object files
|
||||||
|
# realclean: remove all generated files
|
||||||
|
#
|
||||||
|
#
|
||||||
|
# Requirements:
|
||||||
|
#
|
||||||
|
# Compiler:
|
||||||
|
# GCC 4.2
|
||||||
|
#
|
||||||
|
# Libraries:
|
||||||
|
# SDL 1.2 (http://www.libsdl.org)
|
||||||
|
#
|
||||||
|
|
||||||
|
.PHONY: all clean realclean
|
||||||
|
|
||||||
|
OS=$(shell uname)
|
||||||
|
ifeq ($(findstring MINGW,$(OS)),MINGW)
|
||||||
|
OS := WINDOWS
|
||||||
|
endif
|
||||||
|
ifeq ($(findstring CYGWIN,$(OS)),CYGWIN)
|
||||||
|
OS=WINDOWS
|
||||||
|
endif
|
||||||
|
ifeq ($(findstring WINNT,$(OS)),WINNT)
|
||||||
|
OS=WINDOWS
|
||||||
|
endif
|
||||||
|
ifeq ($(OS),Darwin)
|
||||||
|
OS=MACOSX
|
||||||
|
endif
|
||||||
|
|
||||||
|
ifeq ($(OS), WINDOWS)
|
||||||
|
DLLNAME = glide3x.dll
|
||||||
|
else
|
||||||
|
ifeq ($(OS), MACOSX)
|
||||||
|
DLLNAME = glide3x.dylib
|
||||||
|
else
|
||||||
|
DLLNAME = glide3x.so
|
||||||
|
endif
|
||||||
|
endif
|
||||||
|
|
||||||
|
EXT_INC = ./inc
|
||||||
|
EXT_LIB = ./lib
|
||||||
|
|
||||||
|
CC = g++
|
||||||
|
STRIP = strip
|
||||||
|
CFLAGS = -DBUILDING_DLL=1 -fexceptions
|
||||||
|
|
||||||
|
ifeq ($(OS), Linux)
|
||||||
|
LDFLAGS = -shared -lstdc++
|
||||||
|
CFLAGS += -D__unix__
|
||||||
|
endif
|
||||||
|
ifeq ($(OS), MACOSX)
|
||||||
|
LDFLAGS = -dynamiclib -lstdc++
|
||||||
|
CFLAGS += -D__unix__ -Dmacintosh
|
||||||
|
endif
|
||||||
|
ifeq ($(OS), WINDOWS)
|
||||||
|
LDFLAGS = -shared -mwindows
|
||||||
|
CFLAGS += -D__WIN32__ -DWIN32 -D_WIN32
|
||||||
|
endif
|
||||||
|
|
||||||
|
CFLAGS += -ffast-math -funroll-loops
|
||||||
|
CFLAGS += -I. -I$(EXT_INC) `sdl-config --cflags`
|
||||||
|
|
||||||
|
ifdef DEBUG
|
||||||
|
CFLAGS += -g -DDEBUG
|
||||||
|
endif
|
||||||
|
|
||||||
|
LD = g++
|
||||||
|
LDFLAGS2 = --out-implib=libglide3x.a
|
||||||
|
|
||||||
|
LDLIBS = -L"." -L"lib" `sdl-config --libs`
|
||||||
|
ifeq ($(OS), MACOSX)
|
||||||
|
LDLIBS += -framework OpenGL -framework GLUT
|
||||||
|
endif
|
||||||
|
|
||||||
|
RM = rm
|
||||||
|
|
||||||
|
SOURCES = \
|
||||||
|
combiner.cpp \
|
||||||
|
geometry.cpp \
|
||||||
|
main.cpp \
|
||||||
|
textures.cpp \
|
||||||
|
vram.cpp
|
||||||
|
|
||||||
|
OBJECTS = $(SOURCES:.cpp=.o)
|
||||||
|
|
||||||
|
.cpp.o:
|
||||||
|
$(CC) -o $@ $(CFLAGS) -c $<
|
||||||
|
|
||||||
|
all: $(DLLNAME)
|
||||||
|
|
||||||
|
$(DLLNAME): $(OBJECTS)
|
||||||
|
$(LD) -o $@ $(LDFLAGS) $^ $(LDLIBS) --out-implib=libglide3x.a
|
||||||
|
ifeq ($(OS), Linux)
|
||||||
|
$(STRIP) $@
|
||||||
|
endif
|
||||||
|
|
||||||
|
clean:
|
||||||
|
-$(RM) *.o
|
||||||
|
|
||||||
|
realclean: clean
|
||||||
|
-$(RM) $(DLLNAME)
|
||||||
|
|
||||||
|
-include depend
|
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,720 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#ifdef _WIN32
|
||||||
|
#include <windows.h>
|
||||||
|
#endif // _WIN32
|
||||||
|
#include "glide.h"
|
||||||
|
#include "main.h"
|
||||||
|
|
||||||
|
#define Z_MAX (65536.0f)
|
||||||
|
|
||||||
|
static int xy_off;
|
||||||
|
static int xy_en;
|
||||||
|
static int z_en;
|
||||||
|
static int z_off;
|
||||||
|
static int q_off;
|
||||||
|
static int q_en;
|
||||||
|
static int pargb_off;
|
||||||
|
static int pargb_en;
|
||||||
|
static int st0_off;
|
||||||
|
static int st0_en;
|
||||||
|
static int st1_off;
|
||||||
|
static int st1_en;
|
||||||
|
static int fog_ext_off;
|
||||||
|
static int fog_ext_en;
|
||||||
|
|
||||||
|
int w_buffer_mode;
|
||||||
|
int inverted_culling;
|
||||||
|
int culling_mode;
|
||||||
|
|
||||||
|
inline float ZCALC(const float & z, const float & q) {
|
||||||
|
float res = z_en ? ((z) / Z_MAX) / (q) : 1.0f;
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
#define zclamp (1.0f-1.0f/zscale)
|
||||||
|
static inline void zclamp_glVertex4f(float a, float b, float c, float d)
|
||||||
|
{
|
||||||
|
if (c<zclamp) c = zclamp;
|
||||||
|
glVertex4f(a,b,c,d);
|
||||||
|
}
|
||||||
|
#define glVertex4f(a,b,c,d) zclamp_glVertex4f(a,b,c,d)
|
||||||
|
|
||||||
|
|
||||||
|
static inline float ytex(int tmu, float y) {
|
||||||
|
if (invtex[tmu])
|
||||||
|
return invtex[tmu] - y;
|
||||||
|
else
|
||||||
|
return y;
|
||||||
|
}
|
||||||
|
|
||||||
|
void init_geometry()
|
||||||
|
{
|
||||||
|
xy_en = q_en = pargb_en = st0_en = st1_en = z_en = 0;
|
||||||
|
w_buffer_mode = 0;
|
||||||
|
inverted_culling = 0;
|
||||||
|
|
||||||
|
glDisable(GL_CULL_FACE);
|
||||||
|
glDisable(GL_DEPTH_TEST);
|
||||||
|
}
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grCoordinateSpace( GrCoordinateSpaceMode_t mode )
|
||||||
|
{
|
||||||
|
LOG("grCoordinateSpace(%d)\r\n", mode);
|
||||||
|
switch(mode)
|
||||||
|
{
|
||||||
|
case GR_WINDOW_COORDS:
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
display_warning("unknwown coordinate space : %x", mode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grVertexLayout(FxU32 param, FxI32 offset, FxU32 mode)
|
||||||
|
{
|
||||||
|
LOG("grVertexLayout(%d,%d,%d)\r\n", param, offset, mode);
|
||||||
|
switch(param)
|
||||||
|
{
|
||||||
|
case GR_PARAM_XY:
|
||||||
|
xy_en = mode;
|
||||||
|
xy_off = offset;
|
||||||
|
break;
|
||||||
|
case GR_PARAM_Z:
|
||||||
|
z_en = mode;
|
||||||
|
z_off = offset;
|
||||||
|
break;
|
||||||
|
case GR_PARAM_Q:
|
||||||
|
q_en = mode;
|
||||||
|
q_off = offset;
|
||||||
|
break;
|
||||||
|
case GR_PARAM_FOG_EXT:
|
||||||
|
fog_ext_en = mode;
|
||||||
|
fog_ext_off = offset;
|
||||||
|
break;
|
||||||
|
case GR_PARAM_PARGB:
|
||||||
|
pargb_en = mode;
|
||||||
|
pargb_off = offset;
|
||||||
|
break;
|
||||||
|
case GR_PARAM_ST0:
|
||||||
|
st0_en = mode;
|
||||||
|
st0_off = offset;
|
||||||
|
break;
|
||||||
|
case GR_PARAM_ST1:
|
||||||
|
st1_en = mode;
|
||||||
|
st1_off = offset;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
display_warning("unknown grVertexLayout parameter : %x", param);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grCullMode( GrCullMode_t mode )
|
||||||
|
{
|
||||||
|
LOG("grCullMode(%d)\r\n", mode);
|
||||||
|
static int oldmode = -1, oldinv = -1;
|
||||||
|
culling_mode = mode;
|
||||||
|
if (inverted_culling == oldinv && oldmode == mode)
|
||||||
|
return;
|
||||||
|
oldmode = mode;
|
||||||
|
oldinv = inverted_culling;
|
||||||
|
switch(mode)
|
||||||
|
{
|
||||||
|
case GR_CULL_DISABLE:
|
||||||
|
glDisable(GL_CULL_FACE);
|
||||||
|
break;
|
||||||
|
case GR_CULL_NEGATIVE:
|
||||||
|
if (!inverted_culling)
|
||||||
|
glCullFace(GL_FRONT);
|
||||||
|
else
|
||||||
|
glCullFace(GL_BACK);
|
||||||
|
glEnable(GL_CULL_FACE);
|
||||||
|
break;
|
||||||
|
case GR_CULL_POSITIVE:
|
||||||
|
if (!inverted_culling)
|
||||||
|
glCullFace(GL_BACK);
|
||||||
|
else
|
||||||
|
glCullFace(GL_FRONT);
|
||||||
|
glEnable(GL_CULL_FACE);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
display_warning("unknown cull mode : %x", mode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Depth buffer
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grDepthBufferMode( GrDepthBufferMode_t mode )
|
||||||
|
{
|
||||||
|
LOG("grDepthBufferMode(%d)\r\n", mode);
|
||||||
|
switch(mode)
|
||||||
|
{
|
||||||
|
case GR_DEPTHBUFFER_DISABLE:
|
||||||
|
glDisable(GL_DEPTH_TEST);
|
||||||
|
w_buffer_mode = 0;
|
||||||
|
return;
|
||||||
|
case GR_DEPTHBUFFER_WBUFFER:
|
||||||
|
case GR_DEPTHBUFFER_WBUFFER_COMPARE_TO_BIAS:
|
||||||
|
glEnable(GL_DEPTH_TEST);
|
||||||
|
w_buffer_mode = 1;
|
||||||
|
break;
|
||||||
|
case GR_DEPTHBUFFER_ZBUFFER:
|
||||||
|
case GR_DEPTHBUFFER_ZBUFFER_COMPARE_TO_BIAS:
|
||||||
|
glEnable(GL_DEPTH_TEST);
|
||||||
|
w_buffer_mode = 0;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
display_warning("unknown depth buffer mode : %x", mode);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grDepthBufferFunction( GrCmpFnc_t function )
|
||||||
|
{
|
||||||
|
LOG("grDepthBufferFunction(%d)\r\n", function);
|
||||||
|
switch(function)
|
||||||
|
{
|
||||||
|
case GR_CMP_GEQUAL:
|
||||||
|
if (w_buffer_mode)
|
||||||
|
glDepthFunc(GL_LEQUAL);
|
||||||
|
else
|
||||||
|
glDepthFunc(GL_GEQUAL);
|
||||||
|
break;
|
||||||
|
case GR_CMP_LEQUAL:
|
||||||
|
if (w_buffer_mode)
|
||||||
|
glDepthFunc(GL_GEQUAL);
|
||||||
|
else
|
||||||
|
glDepthFunc(GL_LEQUAL);
|
||||||
|
break;
|
||||||
|
case GR_CMP_LESS:
|
||||||
|
if (w_buffer_mode)
|
||||||
|
glDepthFunc(GL_GREATER);
|
||||||
|
else
|
||||||
|
glDepthFunc(GL_LESS);
|
||||||
|
break;
|
||||||
|
case GR_CMP_ALWAYS:
|
||||||
|
glDepthFunc(GL_ALWAYS);
|
||||||
|
break;
|
||||||
|
case GR_CMP_EQUAL:
|
||||||
|
glDepthFunc(GL_EQUAL);
|
||||||
|
break;
|
||||||
|
case GR_CMP_GREATER:
|
||||||
|
if (w_buffer_mode)
|
||||||
|
glDepthFunc(GL_LESS);
|
||||||
|
else
|
||||||
|
glDepthFunc(GL_GREATER);
|
||||||
|
break;
|
||||||
|
case GR_CMP_NEVER:
|
||||||
|
glDepthFunc(GL_NEVER);
|
||||||
|
break;
|
||||||
|
case GR_CMP_NOTEQUAL:
|
||||||
|
glDepthFunc(GL_NOTEQUAL);
|
||||||
|
break;
|
||||||
|
|
||||||
|
default:
|
||||||
|
display_warning("unknown depth buffer function : %x", function);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grDepthMask( FxBool mask )
|
||||||
|
{
|
||||||
|
LOG("grDepthMask(%d)\r\n", mask);
|
||||||
|
glDepthMask(mask);
|
||||||
|
}
|
||||||
|
|
||||||
|
float biasFactor = 0;
|
||||||
|
void FindBestDepthBias()
|
||||||
|
{
|
||||||
|
float f, bestz = 0.25f;
|
||||||
|
int x;
|
||||||
|
if (biasFactor) return;
|
||||||
|
biasFactor = 64.0f; // default value
|
||||||
|
glPushAttrib(GL_ALL_ATTRIB_BITS);
|
||||||
|
glEnable(GL_DEPTH_TEST);
|
||||||
|
glDepthFunc(GL_ALWAYS);
|
||||||
|
glEnable(GL_POLYGON_OFFSET_FILL);
|
||||||
|
glDrawBuffer(GL_BACK);
|
||||||
|
glReadBuffer(GL_BACK);
|
||||||
|
glDisable(GL_BLEND);
|
||||||
|
glDisable(GL_ALPHA_TEST);
|
||||||
|
glColor4ub(255,255,255,255);
|
||||||
|
glDepthMask(GL_TRUE);
|
||||||
|
for (x=0, f=1.0f; f<=65536.0f; x+=4, f*=2.0f) {
|
||||||
|
float z;
|
||||||
|
glPolygonOffset(0, f);
|
||||||
|
glBegin(GL_TRIANGLE_STRIP);
|
||||||
|
glVertex3f(float(x+4 - widtho)/(width/2), float(0 - heighto)/(height/2), 0.5);
|
||||||
|
glVertex3f(float(x - widtho)/(width/2), float(0 - heighto)/(height/2), 0.5);
|
||||||
|
glVertex3f(float(x+4 - widtho)/(width/2), float(4 - heighto)/(height/2), 0.5);
|
||||||
|
glVertex3f(float(x - widtho)/(width/2), float(4 - heighto)/(height/2), 0.5);
|
||||||
|
glEnd();
|
||||||
|
|
||||||
|
glReadPixels(x+2, 2+viewport_offset, 1, 1, GL_DEPTH_COMPONENT, GL_FLOAT, &z);
|
||||||
|
z -= 0.75f + 8e-6f;
|
||||||
|
if (z<0.0f) z = -z;
|
||||||
|
if (z > 0.01f) continue;
|
||||||
|
if (z < bestz) {
|
||||||
|
bestz = z;
|
||||||
|
biasFactor = f;
|
||||||
|
}
|
||||||
|
//printf("f %g z %g\n", f, z);
|
||||||
|
}
|
||||||
|
//printf(" --> bias factor %g\n", biasFactor);
|
||||||
|
glPopAttrib();
|
||||||
|
}
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grDepthBiasLevel( FxI32 level )
|
||||||
|
{
|
||||||
|
LOG("grDepthBiasLevel(%d)\r\n", level);
|
||||||
|
if (level)
|
||||||
|
{
|
||||||
|
if(w_buffer_mode)
|
||||||
|
glPolygonOffset(1.0f, -(float)level*zscale/255.0f);
|
||||||
|
else
|
||||||
|
glPolygonOffset(0, (float)level*biasFactor);
|
||||||
|
glEnable(GL_POLYGON_OFFSET_FILL);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
glPolygonOffset(0,0);
|
||||||
|
glDisable(GL_POLYGON_OFFSET_FILL);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// draw
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grDrawTriangle( const void *a, const void *b, const void *c )
|
||||||
|
{
|
||||||
|
float *a_x = (float*)a + xy_off/sizeof(float);
|
||||||
|
float *a_y = (float*)a + xy_off/sizeof(float) + 1;
|
||||||
|
float *a_z = (float*)a + z_off/sizeof(float);
|
||||||
|
float *a_q = (float*)a + q_off/sizeof(float);
|
||||||
|
unsigned char *a_pargb = (unsigned char*)a + pargb_off;
|
||||||
|
float *a_s0 = (float*)a + st0_off/sizeof(float);
|
||||||
|
float *a_t0 = (float*)a + st0_off/sizeof(float) + 1;
|
||||||
|
float *a_s1 = (float*)a + st1_off/sizeof(float);
|
||||||
|
float *a_t1 = (float*)a + st1_off/sizeof(float) + 1;
|
||||||
|
float *a_fog = (float*)a + fog_ext_off/sizeof(float);
|
||||||
|
|
||||||
|
float *b_x = (float*)b + xy_off/sizeof(float);
|
||||||
|
float *b_y = (float*)b + xy_off/sizeof(float) + 1;
|
||||||
|
float *b_z = (float*)b + z_off/sizeof(float);
|
||||||
|
float *b_q = (float*)b + q_off/sizeof(float);
|
||||||
|
unsigned char *b_pargb = (unsigned char*)b + pargb_off;
|
||||||
|
float *b_s0 = (float*)b + st0_off/sizeof(float);
|
||||||
|
float *b_t0 = (float*)b + st0_off/sizeof(float) + 1;
|
||||||
|
float *b_s1 = (float*)b + st1_off/sizeof(float);
|
||||||
|
float *b_t1 = (float*)b + st1_off/sizeof(float) + 1;
|
||||||
|
float *b_fog = (float*)b + fog_ext_off/sizeof(float);
|
||||||
|
|
||||||
|
float *c_x = (float*)c + xy_off/sizeof(float);
|
||||||
|
float *c_y = (float*)c + xy_off/sizeof(float) + 1;
|
||||||
|
float *c_z = (float*)c + z_off/sizeof(float);
|
||||||
|
float *c_q = (float*)c + q_off/sizeof(float);
|
||||||
|
unsigned char *c_pargb = (unsigned char*)c + pargb_off;
|
||||||
|
float *c_s0 = (float*)c + st0_off/sizeof(float);
|
||||||
|
float *c_t0 = (float*)c + st0_off/sizeof(float) + 1;
|
||||||
|
float *c_s1 = (float*)c + st1_off/sizeof(float);
|
||||||
|
float *c_t1 = (float*)c + st1_off/sizeof(float) + 1;
|
||||||
|
float *c_fog = (float*)c + fog_ext_off/sizeof(float);
|
||||||
|
LOG("grDrawTriangle()\r\n");
|
||||||
|
|
||||||
|
// ugly ? i know but nvidia drivers are losing the viewport otherwise
|
||||||
|
|
||||||
|
if(nvidia_viewport_hack && !render_to_texture)
|
||||||
|
{
|
||||||
|
glViewport(0, viewport_offset, viewport_width, viewport_height);
|
||||||
|
nvidia_viewport_hack = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
reloadTexture();
|
||||||
|
|
||||||
|
if(need_to_compile) compile_shader();
|
||||||
|
|
||||||
|
glBegin(GL_TRIANGLES);
|
||||||
|
|
||||||
|
if (nbTextureUnits > 2)
|
||||||
|
{
|
||||||
|
if (st0_en)
|
||||||
|
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, *a_s0 / *a_q / (float)tex1_width,
|
||||||
|
ytex(0, *a_t0 / *a_q / (float)tex1_height));
|
||||||
|
if (st1_en)
|
||||||
|
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, *a_s1 / *a_q / (float)tex0_width,
|
||||||
|
ytex(1, *a_t1 / *a_q / (float)tex0_height));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (st0_en)
|
||||||
|
glTexCoord2f(*a_s0 / *a_q / (float)tex0_width,
|
||||||
|
ytex(0, *a_t0 / *a_q / (float)tex0_height));
|
||||||
|
}
|
||||||
|
if (pargb_en)
|
||||||
|
glColor4f(a_pargb[2]/255.0f, a_pargb[1]/255.0f, a_pargb[0]/255.0f, a_pargb[3]/255.0f);
|
||||||
|
if (fog_enabled && fog_coord_support)
|
||||||
|
{
|
||||||
|
if(!fog_ext_en || fog_enabled != 2)
|
||||||
|
glSecondaryColor3f((1.0f / *a_q) / 255.0f, 0.0f, 0.0f);
|
||||||
|
else
|
||||||
|
glSecondaryColor3f((1.0f / *a_fog) / 255.0f, 0.0f, 0.0f);
|
||||||
|
}
|
||||||
|
glVertex4f((*a_x - (float)widtho) / (float)(width/2) / *a_q,
|
||||||
|
-(*a_y - (float)heighto) / (float)(height/2) / *a_q, ZCALC(*a_z, *a_q), 1.0f / *a_q);
|
||||||
|
|
||||||
|
if (nbTextureUnits > 2)
|
||||||
|
{
|
||||||
|
if (st0_en)
|
||||||
|
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, *b_s0 / *b_q / (float)tex1_width,
|
||||||
|
ytex(0, *b_t0 / *b_q / (float)tex1_height));
|
||||||
|
if (st1_en)
|
||||||
|
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, *b_s1 / *b_q / (float)tex0_width,
|
||||||
|
ytex(1, *b_t1 / *b_q / (float)tex0_height));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (st0_en)
|
||||||
|
glTexCoord2f(*b_s0 / *b_q / (float)tex0_width,
|
||||||
|
ytex(0, *b_t0 / *b_q / (float)tex0_height));
|
||||||
|
}
|
||||||
|
if (pargb_en)
|
||||||
|
glColor4f(b_pargb[2]/255.0f, b_pargb[1]/255.0f, b_pargb[0]/255.0f, b_pargb[3]/255.0f);
|
||||||
|
if (fog_enabled && fog_coord_support)
|
||||||
|
{
|
||||||
|
if(!fog_ext_en || fog_enabled != 2)
|
||||||
|
glSecondaryColor3f((1.0f / *b_q) / 255.0f, 0.0f, 0.0f);
|
||||||
|
else
|
||||||
|
glSecondaryColor3f((1.0f / *b_fog) / 255.0f, 0.0f, 0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
glVertex4f((*b_x - (float)widtho) / (float)(width/2) / *b_q,
|
||||||
|
-(*b_y - (float)heighto) / (float)(height/2) / *b_q, ZCALC(*b_z, *b_q), 1.0f / *b_q);
|
||||||
|
|
||||||
|
if (nbTextureUnits > 2)
|
||||||
|
{
|
||||||
|
if (st0_en)
|
||||||
|
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, *c_s0 / *c_q / (float)tex1_width,
|
||||||
|
ytex(0, *c_t0 / *c_q / (float)tex1_height));
|
||||||
|
if (st1_en)
|
||||||
|
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, *c_s1 / *c_q / (float)tex0_width,
|
||||||
|
ytex(1, *c_t1 / *c_q / (float)tex0_height));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (st0_en)
|
||||||
|
glTexCoord2f(*c_s0 / *c_q / (float)tex0_width,
|
||||||
|
ytex(0, *c_t0 / *c_q / (float)tex0_height));
|
||||||
|
}
|
||||||
|
if (pargb_en)
|
||||||
|
glColor4f(c_pargb[2]/255.0f, c_pargb[1]/255.0f, c_pargb[0]/255.0f, c_pargb[3]/255.0f);
|
||||||
|
if (fog_enabled && fog_coord_support)
|
||||||
|
{
|
||||||
|
if(!fog_ext_en || fog_enabled != 2)
|
||||||
|
glSecondaryColor3f((1.0f / *c_q) / 255.0f, 0.0f, 0.0f);
|
||||||
|
else
|
||||||
|
glSecondaryColor3f((1.0f / *c_fog) / 255.0f, 0.0f, 0.0f);
|
||||||
|
}
|
||||||
|
glVertex4f((*c_x - (float)widtho) / (float)(width/2) / *c_q,
|
||||||
|
-(*c_y - (float)heighto) / (float)(height/2) / *c_q, ZCALC(*c_z ,*c_q), 1.0f / *c_q);
|
||||||
|
|
||||||
|
glEnd();
|
||||||
|
}
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grDrawPoint( const void *pt )
|
||||||
|
{
|
||||||
|
float *x = (float*)pt + xy_off/sizeof(float);
|
||||||
|
float *y = (float*)pt + xy_off/sizeof(float) + 1;
|
||||||
|
float *z = (float*)pt + z_off/sizeof(float);
|
||||||
|
float *q = (float*)pt + q_off/sizeof(float);
|
||||||
|
unsigned char *pargb = (unsigned char*)pt + pargb_off;
|
||||||
|
float *s0 = (float*)pt + st0_off/sizeof(float);
|
||||||
|
float *t0 = (float*)pt + st0_off/sizeof(float) + 1;
|
||||||
|
float *s1 = (float*)pt + st1_off/sizeof(float);
|
||||||
|
float *t1 = (float*)pt + st1_off/sizeof(float) + 1;
|
||||||
|
float *fog = (float*)pt + fog_ext_off/sizeof(float);
|
||||||
|
LOG("grDrawPoint()\r\n");
|
||||||
|
|
||||||
|
if(nvidia_viewport_hack && !render_to_texture)
|
||||||
|
{
|
||||||
|
glViewport(0, viewport_offset, viewport_width, viewport_height);
|
||||||
|
nvidia_viewport_hack = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
reloadTexture();
|
||||||
|
|
||||||
|
if(need_to_compile) compile_shader();
|
||||||
|
|
||||||
|
glBegin(GL_POINTS);
|
||||||
|
|
||||||
|
if (nbTextureUnits > 2)
|
||||||
|
{
|
||||||
|
if (st0_en)
|
||||||
|
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, *s0 / *q / (float)tex1_width,
|
||||||
|
ytex(0, *t0 / *q / (float)tex1_height));
|
||||||
|
if (st1_en)
|
||||||
|
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, *s1 / *q / (float)tex0_width,
|
||||||
|
ytex(1, *t1 / *q / (float)tex0_height));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (st0_en)
|
||||||
|
glTexCoord2f(*s0 / *q / (float)tex0_width,
|
||||||
|
ytex(0, *t0 / *q / (float)tex0_height));
|
||||||
|
}
|
||||||
|
if (pargb_en)
|
||||||
|
glColor4f(pargb[2]/255.0f, pargb[1]/255.0f, pargb[0]/255.0f, pargb[3]/255.0f);
|
||||||
|
if (fog_enabled && fog_coord_support)
|
||||||
|
{
|
||||||
|
if(!fog_ext_en || fog_enabled != 2)
|
||||||
|
glSecondaryColor3f((1.0f / *q) / 255.0f, 0.0f, 0.0f);
|
||||||
|
else
|
||||||
|
glSecondaryColor3f((1.0f / *fog) / 255.0f, 0.0f, 0.0f);
|
||||||
|
}
|
||||||
|
glVertex4f((*x - (float)widtho) / (float)(width/2) / *q,
|
||||||
|
-(*y - (float)heighto) / (float)(height/2) / *q, ZCALC(*z ,*q), 1.0f / *q);
|
||||||
|
|
||||||
|
glEnd();
|
||||||
|
}
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grDrawLine( const void *a, const void *b )
|
||||||
|
{
|
||||||
|
float *a_x = (float*)a + xy_off/sizeof(float);
|
||||||
|
float *a_y = (float*)a + xy_off/sizeof(float) + 1;
|
||||||
|
float *a_z = (float*)a + z_off/sizeof(float);
|
||||||
|
float *a_q = (float*)a + q_off/sizeof(float);
|
||||||
|
unsigned char *a_pargb = (unsigned char*)a + pargb_off;
|
||||||
|
float *a_s0 = (float*)a + st0_off/sizeof(float);
|
||||||
|
float *a_t0 = (float*)a + st0_off/sizeof(float) + 1;
|
||||||
|
float *a_s1 = (float*)a + st1_off/sizeof(float);
|
||||||
|
float *a_t1 = (float*)a + st1_off/sizeof(float) + 1;
|
||||||
|
float *a_fog = (float*)a + fog_ext_off/sizeof(float);
|
||||||
|
|
||||||
|
float *b_x = (float*)b + xy_off/sizeof(float);
|
||||||
|
float *b_y = (float*)b + xy_off/sizeof(float) + 1;
|
||||||
|
float *b_z = (float*)b + z_off/sizeof(float);
|
||||||
|
float *b_q = (float*)b + q_off/sizeof(float);
|
||||||
|
unsigned char *b_pargb = (unsigned char*)b + pargb_off;
|
||||||
|
float *b_s0 = (float*)b + st0_off/sizeof(float);
|
||||||
|
float *b_t0 = (float*)b + st0_off/sizeof(float) + 1;
|
||||||
|
float *b_s1 = (float*)b + st1_off/sizeof(float);
|
||||||
|
float *b_t1 = (float*)b + st1_off/sizeof(float) + 1;
|
||||||
|
float *b_fog = (float*)b + fog_ext_off/sizeof(float);
|
||||||
|
LOG("grDrawLine()\r\n");
|
||||||
|
|
||||||
|
if(nvidia_viewport_hack && !render_to_texture)
|
||||||
|
{
|
||||||
|
glViewport(0, viewport_offset, viewport_width, viewport_height);
|
||||||
|
nvidia_viewport_hack = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
reloadTexture();
|
||||||
|
|
||||||
|
if(need_to_compile) compile_shader();
|
||||||
|
|
||||||
|
glBegin(GL_LINES);
|
||||||
|
|
||||||
|
if (nbTextureUnits > 2)
|
||||||
|
{
|
||||||
|
if (st0_en)
|
||||||
|
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, *a_s0 / *a_q / (float)tex1_width, ytex(0, *a_t0 / *a_q / (float)tex1_height));
|
||||||
|
if (st1_en)
|
||||||
|
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, *a_s1 / *a_q / (float)tex0_width, ytex(1, *a_t1 / *a_q / (float)tex0_height));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (st0_en)
|
||||||
|
glTexCoord2f(*a_s0 / *a_q / (float)tex0_width, ytex(0, *a_t0 / *a_q / (float)tex0_height));
|
||||||
|
}
|
||||||
|
if (pargb_en)
|
||||||
|
glColor4f(a_pargb[2]/255.0f, a_pargb[1]/255.0f, a_pargb[0]/255.0f, a_pargb[3]/255.0f);
|
||||||
|
if (fog_enabled && fog_coord_support)
|
||||||
|
{
|
||||||
|
if(!fog_ext_en || fog_enabled != 2)
|
||||||
|
glSecondaryColor3f((1.0f / *a_q) / 255.0f, 0.0f, 0.0f);
|
||||||
|
else
|
||||||
|
glSecondaryColor3f((1.0f / *a_fog) / 255.0f, 0.0f, 0.0f);
|
||||||
|
}
|
||||||
|
glVertex4f((*a_x - (float)widtho) / (float)(width/2) / *a_q,
|
||||||
|
-(*a_y - (float)heighto) / (float)(height/2) / *a_q, ZCALC(*a_z, *a_q), 1.0f / *a_q);
|
||||||
|
|
||||||
|
if (nbTextureUnits > 2)
|
||||||
|
{
|
||||||
|
if (st0_en)
|
||||||
|
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, *b_s0 / *b_q / (float)tex1_width,
|
||||||
|
ytex(0, *b_t0 / *b_q / (float)tex1_height));
|
||||||
|
if (st1_en)
|
||||||
|
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, *b_s1 / *b_q / (float)tex0_width,
|
||||||
|
ytex(1, *b_t1 / *b_q / (float)tex0_height));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (st0_en)
|
||||||
|
glTexCoord2f(*b_s0 / *b_q / (float)tex0_width,
|
||||||
|
ytex(0, *b_t0 / *b_q / (float)tex0_height));
|
||||||
|
}
|
||||||
|
if (pargb_en)
|
||||||
|
glColor4f(b_pargb[2]/255.0f, b_pargb[1]/255.0f, b_pargb[0]/255.0f, b_pargb[3]/255.0f);
|
||||||
|
if (fog_enabled && fog_coord_support)
|
||||||
|
{
|
||||||
|
if(!fog_ext_en || fog_enabled != 2)
|
||||||
|
glSecondaryColor3f((1.0f / *b_q) / 255.0f, 0.0f, 0.0f);
|
||||||
|
else
|
||||||
|
glSecondaryColor3f((1.0f / *b_fog) / 255.0f, 0.0f, 0.0f);
|
||||||
|
}
|
||||||
|
glVertex4f((*b_x - (float)widtho) / (float)(width/2) / *b_q,
|
||||||
|
-(*b_y - (float)heighto) / (float)(height/2) / *b_q, ZCALC(*b_z, *b_q), 1.0f / *b_q);
|
||||||
|
|
||||||
|
glEnd();
|
||||||
|
}
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grDrawVertexArray(FxU32 mode, FxU32 Count, void *pointers2)
|
||||||
|
{
|
||||||
|
unsigned int i;
|
||||||
|
float *x, *y, *q, *s0, *t0, *s1, *t1, *z, *fog;
|
||||||
|
unsigned char *pargb;
|
||||||
|
void **pointers = (void**)pointers2;
|
||||||
|
LOG("grDrawVertexArray(%d,%d)\r\n", mode, Count);
|
||||||
|
|
||||||
|
if(nvidia_viewport_hack && !render_to_texture)
|
||||||
|
{
|
||||||
|
glViewport(0, viewport_offset, viewport_width, viewport_height);
|
||||||
|
nvidia_viewport_hack = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
reloadTexture();
|
||||||
|
|
||||||
|
if(need_to_compile) compile_shader();
|
||||||
|
|
||||||
|
switch(mode)
|
||||||
|
{
|
||||||
|
case GR_TRIANGLE_FAN:
|
||||||
|
glBegin(GL_TRIANGLE_FAN);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
display_warning("grDrawVertexArray : unknown mode : %x", mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i=0; i<Count; i++)
|
||||||
|
{
|
||||||
|
x = (float*)pointers[i] + xy_off/sizeof(float);
|
||||||
|
y = (float*)pointers[i] + xy_off/sizeof(float) + 1;
|
||||||
|
z = (float*)pointers[i] + z_off/sizeof(float);
|
||||||
|
q = (float*)pointers[i] + q_off/sizeof(float);
|
||||||
|
pargb = (unsigned char*)pointers[i] + pargb_off;
|
||||||
|
s0 = (float*)pointers[i] + st0_off/sizeof(float);
|
||||||
|
t0 = (float*)pointers[i] + st0_off/sizeof(float) + 1;
|
||||||
|
s1 = (float*)pointers[i] + st1_off/sizeof(float);
|
||||||
|
t1 = (float*)pointers[i] + st1_off/sizeof(float) + 1;
|
||||||
|
fog = (float*)pointers[i] + fog_ext_off/sizeof(float);
|
||||||
|
|
||||||
|
if (nbTextureUnits > 2)
|
||||||
|
{
|
||||||
|
if (st0_en)
|
||||||
|
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, *s0 / *q / (float)tex1_width,
|
||||||
|
ytex(0, *t0 / *q / (float)tex1_height));
|
||||||
|
if (st1_en)
|
||||||
|
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, *s1 / *q / (float)tex0_width,
|
||||||
|
ytex(1, *t1 / *q / (float)tex0_height));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (st0_en)
|
||||||
|
glTexCoord2f(*s0 / *q / (float)tex0_width,
|
||||||
|
ytex(0, *t0 / *q / (float)tex0_height));
|
||||||
|
}
|
||||||
|
if (pargb_en)
|
||||||
|
glColor4f(pargb[2]/255.0f, pargb[1]/255.0f, pargb[0]/255.0f, pargb[3]/255.0f);
|
||||||
|
if (fog_enabled && fog_coord_support)
|
||||||
|
{
|
||||||
|
if(!fog_ext_en || fog_enabled != 2)
|
||||||
|
glSecondaryColor3f((1.0f / *q) / 255.0f, 0.0f, 0.0f);
|
||||||
|
else
|
||||||
|
glSecondaryColor3f((1.0f / *fog) / 255.0f, 0.0f, 0.0f);
|
||||||
|
}
|
||||||
|
glVertex4f((*x - (float)widtho) / (float)(width/2) / *q,
|
||||||
|
-(*y - (float)heighto) / (float)(height/2) / *q, ZCALC(*z, *q), 1.0f / *q);
|
||||||
|
}
|
||||||
|
glEnd();
|
||||||
|
}
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grDrawVertexArrayContiguous(FxU32 mode, FxU32 Count, void *pointers, FxU32 stride)
|
||||||
|
{
|
||||||
|
unsigned int i;
|
||||||
|
float *x, *y, *q, *s0, *t0, *s1, *t1, *z, *fog;
|
||||||
|
unsigned char *pargb;
|
||||||
|
LOG("grDrawVertexArrayContiguous(%d,%d,%d)\r\n", mode, Count, stride);
|
||||||
|
|
||||||
|
if(nvidia_viewport_hack && !render_to_texture)
|
||||||
|
{
|
||||||
|
glViewport(0, viewport_offset, viewport_width, viewport_height);
|
||||||
|
nvidia_viewport_hack = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
reloadTexture();
|
||||||
|
|
||||||
|
if(need_to_compile) compile_shader();
|
||||||
|
|
||||||
|
switch(mode)
|
||||||
|
{
|
||||||
|
case GR_TRIANGLE_STRIP:
|
||||||
|
glBegin(GL_TRIANGLE_STRIP);
|
||||||
|
break;
|
||||||
|
case GR_TRIANGLE_FAN:
|
||||||
|
glBegin(GL_TRIANGLE_FAN);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
display_warning("grDrawVertexArrayContiguous : unknown mode : %x", mode);
|
||||||
|
}
|
||||||
|
|
||||||
|
for (i=0; i<Count; i++)
|
||||||
|
{
|
||||||
|
x = (float*)((unsigned char*)pointers+stride*i) + xy_off/sizeof(float);
|
||||||
|
y = (float*)((unsigned char*)pointers+stride*i) + xy_off/sizeof(float) + 1;
|
||||||
|
z = (float*)((unsigned char*)pointers+stride*i) + z_off/sizeof(float);
|
||||||
|
q = (float*)((unsigned char*)pointers+stride*i) + q_off/sizeof(float);
|
||||||
|
pargb = (unsigned char*)pointers+stride*i + pargb_off;
|
||||||
|
s0 = (float*)((unsigned char*)pointers+stride*i) + st0_off/sizeof(float);
|
||||||
|
t0 = (float*)((unsigned char*)pointers+stride*i) + st0_off/sizeof(float) + 1;
|
||||||
|
s1 = (float*)((unsigned char*)pointers+stride*i) + st1_off/sizeof(float);
|
||||||
|
t1 = (float*)((unsigned char*)pointers+stride*i) + st1_off/sizeof(float) + 1;
|
||||||
|
fog = (float*)((unsigned char*)pointers+stride*i) + fog_ext_off/sizeof(float);
|
||||||
|
|
||||||
|
//if(*fog == 0.0f) *fog = 1.0f;
|
||||||
|
|
||||||
|
if (nbTextureUnits > 2)
|
||||||
|
{
|
||||||
|
if (st0_en)
|
||||||
|
glMultiTexCoord2fARB(GL_TEXTURE1_ARB, *s0 / *q / (float)tex1_width,
|
||||||
|
ytex(0, *t0 / *q / (float)tex1_height));
|
||||||
|
if (st1_en)
|
||||||
|
glMultiTexCoord2fARB(GL_TEXTURE0_ARB, *s1 / *q / (float)tex0_width,
|
||||||
|
ytex(1, *t1 / *q / (float)tex0_height));
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (st0_en)
|
||||||
|
glTexCoord2f(*s0 / *q / (float)tex0_width,
|
||||||
|
ytex(0, *t0 / *q / (float)tex0_height));
|
||||||
|
}
|
||||||
|
if (pargb_en)
|
||||||
|
glColor4f(pargb[2]/255.0f, pargb[1]/255.0f, pargb[0]/255.0f, pargb[3]/255.0f);
|
||||||
|
if (fog_enabled && fog_coord_support)
|
||||||
|
{
|
||||||
|
if(!fog_ext_en || fog_enabled != 2)
|
||||||
|
glSecondaryColor3f((1.0f / *q) / 255.0f, 0.0f, 0.0f);
|
||||||
|
else
|
||||||
|
glSecondaryColor3f((1.0f / *fog) / 255.0f, 0.0f, 0.0f);
|
||||||
|
}
|
||||||
|
|
||||||
|
glVertex4f((*x - (float)widtho) / (float)(width/2) / *q,
|
||||||
|
-(*y - (float)heighto) / (float)(height/2) / *q, ZCALC(*z, *q), 1.0f / *q);
|
||||||
|
}
|
||||||
|
glEnd();
|
||||||
|
}
|
|
@ -0,0 +1,130 @@
|
||||||
|
/*
|
||||||
|
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||||
|
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||||
|
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||||
|
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||||
|
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||||
|
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||||
|
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||||
|
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||||
|
**
|
||||||
|
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||||
|
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (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, DOD OR NASA FAR
|
||||||
|
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||||
|
** THE UNITED STATES.
|
||||||
|
**
|
||||||
|
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||||
|
**
|
||||||
|
** $Revision: 1.3.4.2 $
|
||||||
|
** $Date: 2003/05/05 06:50:41 $
|
||||||
|
*/
|
||||||
|
#ifndef __3DFX_H__
|
||||||
|
#define __3DFX_H__
|
||||||
|
|
||||||
|
/*
|
||||||
|
** basic data types
|
||||||
|
*/
|
||||||
|
typedef unsigned char FxU8;
|
||||||
|
typedef signed char FxI8;
|
||||||
|
typedef unsigned short FxU16;
|
||||||
|
typedef signed short FxI16;
|
||||||
|
#if defined(__alpha__) || defined (__LP64__)
|
||||||
|
typedef signed int FxI32;
|
||||||
|
typedef unsigned int FxU32;
|
||||||
|
#else
|
||||||
|
typedef signed long FxI32;
|
||||||
|
typedef unsigned long FxU32;
|
||||||
|
#endif
|
||||||
|
typedef unsigned long AnyPtr;
|
||||||
|
typedef int FxBool;
|
||||||
|
typedef float FxFloat;
|
||||||
|
typedef double FxDouble;
|
||||||
|
|
||||||
|
/*
|
||||||
|
** color types
|
||||||
|
*/
|
||||||
|
typedef unsigned long FxColor_t;
|
||||||
|
typedef struct { float r, g, b, a; } FxColor4;
|
||||||
|
|
||||||
|
/*
|
||||||
|
** fundamental types
|
||||||
|
*/
|
||||||
|
#define FXTRUE 1
|
||||||
|
#define FXFALSE 0
|
||||||
|
|
||||||
|
/*
|
||||||
|
** helper macros
|
||||||
|
*/
|
||||||
|
#define FXUNUSED( a ) ((void)(a))
|
||||||
|
#define FXBIT( i ) ( 1L << (i) )
|
||||||
|
|
||||||
|
/*
|
||||||
|
** export macros
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if defined(__MSC__) || defined(_MSC_VER)
|
||||||
|
# if defined (MSVC16)
|
||||||
|
# define FX_ENTRY
|
||||||
|
# define FX_CALL
|
||||||
|
# else
|
||||||
|
# define FX_ENTRY __declspec(dllexport) extern
|
||||||
|
# define FX_CALL __stdcall
|
||||||
|
# endif
|
||||||
|
#elif defined(__WATCOMC__)
|
||||||
|
# define FX_ENTRY extern
|
||||||
|
# define FX_CALL __stdcall
|
||||||
|
#elif defined (__IBMC__) || defined (__IBMCPP__)
|
||||||
|
/* IBM Visual Age C/C++: */
|
||||||
|
# define FX_ENTRY extern
|
||||||
|
# define FX_CALL __stdcall
|
||||||
|
#elif defined(__DJGPP__)
|
||||||
|
# define FX_ENTRY extern
|
||||||
|
# define FX_CALL
|
||||||
|
#elif defined(__MINGW32__)
|
||||||
|
# define FX_ENTRY extern
|
||||||
|
# define FX_CALL __stdcall
|
||||||
|
#elif defined(__unix__)
|
||||||
|
# define FX_ENTRY extern
|
||||||
|
# define FX_CALL
|
||||||
|
#elif defined(__MWERKS__)
|
||||||
|
# if macintosh
|
||||||
|
# define FX_ENTRY extern
|
||||||
|
# define FX_CALL
|
||||||
|
# else /* !macintosh */
|
||||||
|
# error "Unknown MetroWerks target platform"
|
||||||
|
# endif /* !macintosh */
|
||||||
|
#else
|
||||||
|
# warning define FX_ENTRY & FX_CALL for your compiler
|
||||||
|
# define FX_ENTRY extern
|
||||||
|
# define FX_CALL
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
** x86 compiler specific stuff
|
||||||
|
*/
|
||||||
|
#if defined(__BORLANDC_)
|
||||||
|
# define REALMODE
|
||||||
|
|
||||||
|
# define REGW( a, b ) ((a).x.b)
|
||||||
|
# define REGB( a, b ) ((a).h.b)
|
||||||
|
# define INT86( a, b, c ) int86(a,b,c)
|
||||||
|
# define INT86X( a, b, c, d ) int86x(a,b,c,d)
|
||||||
|
|
||||||
|
# define RM_SEG( a ) FP_SEG( a )
|
||||||
|
# define RM_OFF( a ) FP_OFF( a )
|
||||||
|
#elif defined(__WATCOMC__)
|
||||||
|
# undef FP_SEG
|
||||||
|
# undef FP_OFF
|
||||||
|
|
||||||
|
# define REGW( a, b ) ((a).w.b)
|
||||||
|
# define REGB( a, b ) ((a).h.b)
|
||||||
|
# define INT86( a, b, c ) int386(a,b,c)
|
||||||
|
# define INT86X( a, b, c, d ) int386x(a,b,c,d)
|
||||||
|
|
||||||
|
# define RM_SEG( a ) ( ( ( ( FxU32 ) (a) ) & 0x000F0000 ) >> 4 )
|
||||||
|
# define RM_OFF( a ) ( ( FxU16 ) (a) )
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* !__3DFX_H__ */
|
|
@ -0,0 +1,187 @@
|
||||||
|
/*==========================================================================;
|
||||||
|
*
|
||||||
|
* Copyright (C) Microsoft Corporation. All Rights Reserved.
|
||||||
|
*
|
||||||
|
* File: dxdiag.h
|
||||||
|
* Content: DirectX Diagnostic Tool include file
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#ifndef _DXDIAG_H_
|
||||||
|
#define _DXDIAG_H_
|
||||||
|
|
||||||
|
#include <ole2.h> // for DECLARE_INTERFACE_ and HRESULT
|
||||||
|
|
||||||
|
// This identifier is passed to IDxDiagProvider::Initialize in order to ensure that an
|
||||||
|
// application was built against the correct header files. This number is
|
||||||
|
// incremented whenever a header (or other) change would require applications
|
||||||
|
// to be rebuilt. If the version doesn't match, IDxDiagProvider::Initialize will fail.
|
||||||
|
// (The number itself has no meaning.)
|
||||||
|
#define DXDIAG_DX9_SDK_VERSION 111
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
*
|
||||||
|
* DxDiag Errors
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
#define DXDIAG_E_INSUFFICIENT_BUFFER ((HRESULT)0x8007007AL) // HRESULT_FROM_WIN32(ERROR_INSUFFICIENT_BUFFER)
|
||||||
|
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
*
|
||||||
|
* DxDiag CLSIDs
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
// {A65B8071-3BFE-4213-9A5B-491DA4461CA7}
|
||||||
|
DEFINE_GUID(CLSID_DxDiagProvider,
|
||||||
|
0xA65B8071, 0x3BFE, 0x4213, 0x9A, 0x5B, 0x49, 0x1D, 0xA4, 0x46, 0x1C, 0xA7);
|
||||||
|
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
*
|
||||||
|
* DxDiag Interface IIDs
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
// {9C6B4CB0-23F8-49CC-A3ED-45A55000A6D2}
|
||||||
|
DEFINE_GUID(IID_IDxDiagProvider,
|
||||||
|
0x9C6B4CB0, 0x23F8, 0x49CC, 0xA3, 0xED, 0x45, 0xA5, 0x50, 0x00, 0xA6, 0xD2);
|
||||||
|
|
||||||
|
// {0x7D0F462F-0x4064-0x4862-BC7F-933E5058C10F}
|
||||||
|
DEFINE_GUID(IID_IDxDiagContainer,
|
||||||
|
0x7D0F462F, 0x4064, 0x4862, 0xBC, 0x7F, 0x93, 0x3E, 0x50, 0x58, 0xC1, 0x0F);
|
||||||
|
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
*
|
||||||
|
* DxDiag Interface Pointer definitions
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
typedef struct IDxDiagProvider *LPDXDIAGPROVIDER, *PDXDIAGPROVIDER;
|
||||||
|
|
||||||
|
typedef struct IDxDiagContainer *LPDXDIAGCONTAINER, *PDXDIAGCONTAINER;
|
||||||
|
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
*
|
||||||
|
* DxDiag Structures
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
typedef struct _DXDIAG_INIT_PARAMS
|
||||||
|
{
|
||||||
|
DWORD dwSize; // Size of this structure.
|
||||||
|
DWORD dwDxDiagHeaderVersion; // Pass in DXDIAG_DX9_SDK_VERSION. This verifies
|
||||||
|
// the header and dll are correctly matched.
|
||||||
|
BOOL bAllowWHQLChecks; // If true, allow dxdiag to check if drivers are
|
||||||
|
// digital signed as logo'd by WHQL which may
|
||||||
|
// connect via internet to update WHQL certificates.
|
||||||
|
VOID* pReserved; // Reserved. Must be NULL.
|
||||||
|
} DXDIAG_INIT_PARAMS;
|
||||||
|
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
*
|
||||||
|
* DxDiag Application Interfaces
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
//
|
||||||
|
// COM definition for IDxDiagProvider
|
||||||
|
//
|
||||||
|
#undef INTERFACE // External COM Implementation
|
||||||
|
#define INTERFACE IDxDiagProvider
|
||||||
|
DECLARE_INTERFACE_(IDxDiagProvider,IUnknown)
|
||||||
|
{
|
||||||
|
/*** IUnknown methods ***/
|
||||||
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID *ppvObj) PURE;
|
||||||
|
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
|
||||||
|
STDMETHOD_(ULONG,Release) (THIS) PURE;
|
||||||
|
|
||||||
|
/*** IDxDiagProvider methods ***/
|
||||||
|
STDMETHOD(Initialize) (THIS_ DXDIAG_INIT_PARAMS* pParams) PURE;
|
||||||
|
STDMETHOD(GetRootContainer) (THIS_ IDxDiagContainer **ppInstance) PURE;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
//
|
||||||
|
// COM definition for IDxDiagContainer
|
||||||
|
//
|
||||||
|
#undef INTERFACE // External COM Implementation
|
||||||
|
#define INTERFACE IDxDiagContainer
|
||||||
|
DECLARE_INTERFACE_(IDxDiagContainer,IUnknown)
|
||||||
|
{
|
||||||
|
/*** IUnknown methods ***/
|
||||||
|
STDMETHOD(QueryInterface) (THIS_ REFIID riid, LPVOID *ppvObj) PURE;
|
||||||
|
STDMETHOD_(ULONG,AddRef) (THIS) PURE;
|
||||||
|
STDMETHOD_(ULONG,Release) (THIS) PURE;
|
||||||
|
|
||||||
|
/*** IDxDiagContainer methods ***/
|
||||||
|
STDMETHOD(GetNumberOfChildContainers) (THIS_ DWORD *pdwCount) PURE;
|
||||||
|
STDMETHOD(EnumChildContainerNames) (THIS_ DWORD dwIndex, LPWSTR pwszContainer, DWORD cchContainer) PURE;
|
||||||
|
STDMETHOD(GetChildContainer) (THIS_ LPCWSTR pwszContainer, IDxDiagContainer **ppInstance) PURE;
|
||||||
|
STDMETHOD(GetNumberOfProps) (THIS_ DWORD *pdwCount) PURE;
|
||||||
|
STDMETHOD(EnumPropNames) (THIS_ DWORD dwIndex, LPWSTR pwszPropName, DWORD cchPropName) PURE;
|
||||||
|
STDMETHOD(GetProp) (THIS_ LPCWSTR pwszPropName, VARIANT *pvarProp) PURE;
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
/****************************************************************************
|
||||||
|
*
|
||||||
|
* DxDiag application interface macros
|
||||||
|
*
|
||||||
|
****************************************************************************/
|
||||||
|
|
||||||
|
#if !defined(__cplusplus) || defined(CINTERFACE)
|
||||||
|
|
||||||
|
#define IDxDiagProvider_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
|
||||||
|
#define IDxDiagProvider_AddRef(p) (p)->lpVtbl->AddRef(p)
|
||||||
|
#define IDxDiagProvider_Release(p) (p)->lpVtbl->Release(p)
|
||||||
|
#define IDxDiagProvider_Initialize(p,a,b) (p)->lpVtbl->Initialize(p,a,b)
|
||||||
|
#define IDxDiagProvider_GetRootContainer(p,a) (p)->lpVtbl->GetRootContainer(p,a)
|
||||||
|
|
||||||
|
#define IDxDiagContainer_QueryInterface(p,a,b) (p)->lpVtbl->QueryInterface(p,a,b)
|
||||||
|
#define IDxDiagContainer_AddRef(p) (p)->lpVtbl->AddRef(p)
|
||||||
|
#define IDxDiagContainer_Release(p) (p)->lpVtbl->Release(p)
|
||||||
|
#define IDxDiagContainer_GetNumberOfChildContainers(p,a) (p)->lpVtbl->GetNumberOfChildContainers(p,a)
|
||||||
|
#define IDxDiagContainer_EnumChildContainerNames(p,a,b,c) (p)->lpVtbl->EnumChildContainerNames(p,a,b,c)
|
||||||
|
#define IDxDiagContainer_GetChildContainer(p,a,b) (p)->lpVtbl->GetChildContainer(p,a,b)
|
||||||
|
#define IDxDiagContainer_GetNumberOfProps(p,a) (p)->lpVtbl->GetNumberOfProps(p,a)
|
||||||
|
#define IDxDiagContainer_EnumProps(p,a,b) (p)->lpVtbl->EnumProps(p,a,b,c)
|
||||||
|
#define IDxDiagContainer_GetProp(p,a,b) (p)->lpVtbl->GetProp(p,a,b)
|
||||||
|
|
||||||
|
#else /* C++ */
|
||||||
|
|
||||||
|
#define IDxDiagProvider_QueryInterface(p,a,b) (p)->QueryInterface(p,a,b)
|
||||||
|
#define IDxDiagProvider_AddRef(p) (p)->AddRef(p)
|
||||||
|
#define IDxDiagProvider_Release(p) (p)->Release(p)
|
||||||
|
#define IDxDiagProvider_Initialize(p,a,b) (p)->Initialize(p,a,b)
|
||||||
|
#define IDxDiagProvider_GetRootContainer(p,a) (p)->GetRootContainer(p,a)
|
||||||
|
|
||||||
|
#define IDxDiagContainer_QueryInterface(p,a,b) (p)->QueryInterface(p,a,b)
|
||||||
|
#define IDxDiagContainer_AddRef(p) (p)->AddRef(p)
|
||||||
|
#define IDxDiagContainer_Release(p) (p)->Release(p)
|
||||||
|
#define IDxDiagContainer_GetNumberOfChildContainers(p,a) (p)->GetNumberOfChildContainers(p,a)
|
||||||
|
#define IDxDiagContainer_EnumChildContainerNames(p,a,b,c) (p)->EnumChildContainerNames(p,a,b,c)
|
||||||
|
#define IDxDiagContainer_GetChildContainer(p,a,b) (p)->GetChildContainer(p,a,b)
|
||||||
|
#define IDxDiagContainer_GetNumberOfProps(p,a) (p)->GetNumberOfProps(p,a)
|
||||||
|
#define IDxDiagContainer_EnumProps(p,a,b) (p)->EnumProps(p,a,b,c)
|
||||||
|
#define IDxDiagContainer_GetProp(p,a,b) (p)->GetProp(p,a,b)
|
||||||
|
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* _DXDIAG_H_ */
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,187 @@
|
||||||
|
/*
|
||||||
|
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||||
|
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||||
|
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||||
|
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||||
|
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||||
|
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||||
|
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||||
|
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||||
|
**
|
||||||
|
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||||
|
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (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, DOD OR NASA FAR
|
||||||
|
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||||
|
** THE UNITED STATES.
|
||||||
|
**
|
||||||
|
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
** H3EXT.H
|
||||||
|
**
|
||||||
|
** The following #defines are relevant when using Glide:
|
||||||
|
**
|
||||||
|
** One of the following "platform constants" must be defined during
|
||||||
|
** compilation:
|
||||||
|
**
|
||||||
|
** __DOS__ Defined for 32-bit DOS applications
|
||||||
|
** __WIN32__ Defined for 32-bit Windows applications
|
||||||
|
** __sparc__ Defined for Sun Solaris/SunOS
|
||||||
|
** __linux__ Defined for Linux applications
|
||||||
|
** __FreeBSD__ Defined for FreeBSD applications
|
||||||
|
** __NetBSD__ Defined for NetBSD applications
|
||||||
|
** __OpenBSD__ Defined for OpenBSD applications
|
||||||
|
** __IRIX__ Defined for SGI Irix applications
|
||||||
|
**
|
||||||
|
*/
|
||||||
|
#ifndef __H3EXT_H__
|
||||||
|
#define __H3EXT_H__
|
||||||
|
|
||||||
|
#include <3dfx.h>
|
||||||
|
#include <glidesys.h>
|
||||||
|
#include <sst1vid.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
** -----------------------------------------------------------------------
|
||||||
|
** TYPE DEFINITIONS
|
||||||
|
** -----------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
** -----------------------------------------------------------------------
|
||||||
|
** CONSTANTS AND TYPES
|
||||||
|
** -----------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
* gregk 5/3/99
|
||||||
|
* Constants defined for SSTH3_ALPHADITHERMODE registry key
|
||||||
|
*/
|
||||||
|
|
||||||
|
#define OPTIMAL 1
|
||||||
|
#define SHARPER 2
|
||||||
|
#define SMOOTHER 3
|
||||||
|
|
||||||
|
/* tbext */
|
||||||
|
#define GR_BUFFER_TEXTUREBUFFER_EXT 0x6
|
||||||
|
#define GR_BUFFER_TEXTUREAUXBUFFER_EXT 0x7
|
||||||
|
|
||||||
|
typedef FxU32 GrPixelFormat_t;
|
||||||
|
|
||||||
|
#define GR_PIXFMT_I_8 0x0001
|
||||||
|
#define GR_PIXFMT_AI_88 0x0002
|
||||||
|
#define GR_PIXFMT_RGB_565 0x0003
|
||||||
|
#define GR_PIXFMT_ARGB_1555 0x0004
|
||||||
|
#define GR_PIXFMT_ARGB_8888 0x0005
|
||||||
|
#define GR_PIXFMT_AA_2_RGB_565 0x0006
|
||||||
|
#define GR_PIXFMT_AA_2_ARGB_1555 0x0007
|
||||||
|
#define GR_PIXFMT_AA_2_ARGB_8888 0x0008
|
||||||
|
#define GR_PIXFMT_AA_4_RGB_565 0x0009
|
||||||
|
#define GR_PIXFMT_AA_4_ARGB_1555 0x000a
|
||||||
|
#define GR_PIXFMT_AA_4_ARGB_8888 0x000b
|
||||||
|
#define GR_PIXFMT_AA_8_RGB_565 0x000c /* 8xaa */
|
||||||
|
#define GR_PIXFMT_AA_8_ARGB_1555 0x000d
|
||||||
|
#define GR_PIXFMT_AA_8_ARGB_8888 0x000e
|
||||||
|
|
||||||
|
|
||||||
|
#define GR_LFBWRITEMODE_Z32 0x0008
|
||||||
|
|
||||||
|
typedef FxU32 GrAAMode_t;
|
||||||
|
|
||||||
|
#define GR_AA_NONE 0x0000
|
||||||
|
#define GR_AA_4SAMPLES 0x0001
|
||||||
|
|
||||||
|
typedef FxU8 GrStencil_t;
|
||||||
|
|
||||||
|
typedef FxU32 GrStencilOp_t;
|
||||||
|
#define GR_STENCILOP_KEEP 0x00 /* keep current value */
|
||||||
|
#define GR_STENCILOP_ZERO 0x01 /* set to zero */
|
||||||
|
#define GR_STENCILOP_REPLACE 0x02 /* replace with reference value */
|
||||||
|
#define GR_STENCILOP_INCR_CLAMP 0x03 /* increment - clamp */
|
||||||
|
#define GR_STENCILOP_DECR_CLAMP 0x04 /* decrement - clamp */
|
||||||
|
#define GR_STENCILOP_INVERT 0x05 /* bitwise inversion */
|
||||||
|
#define GR_STENCILOP_INCR_WRAP 0x06 /* increment - wrap */
|
||||||
|
#define GR_STENCILOP_DECR_WRAP 0x07 /* decrement - wrap */
|
||||||
|
|
||||||
|
#define GR_TEXTURE_UMA_EXT 0x06
|
||||||
|
#define GR_STENCIL_MODE_EXT 0x07
|
||||||
|
#define GR_OPENGL_MODE_EXT 0x08
|
||||||
|
|
||||||
|
typedef FxU32 GrCCUColor_t;
|
||||||
|
|
||||||
|
typedef FxU32 GrACUColor_t;
|
||||||
|
|
||||||
|
typedef FxU32 GrTCCUColor_t;
|
||||||
|
|
||||||
|
typedef FxU32 GrTACUColor_t;
|
||||||
|
|
||||||
|
#define GR_CMBX_ZERO 0x00
|
||||||
|
#define GR_CMBX_TEXTURE_ALPHA 0x01
|
||||||
|
#define GR_CMBX_ALOCAL 0x02
|
||||||
|
#define GR_CMBX_AOTHER 0x03
|
||||||
|
#define GR_CMBX_B 0x04
|
||||||
|
#define GR_CMBX_CONSTANT_ALPHA 0x05
|
||||||
|
#define GR_CMBX_CONSTANT_COLOR 0x06
|
||||||
|
#define GR_CMBX_DETAIL_FACTOR 0x07
|
||||||
|
#define GR_CMBX_ITALPHA 0x08
|
||||||
|
#define GR_CMBX_ITRGB 0x09
|
||||||
|
#define GR_CMBX_LOCAL_TEXTURE_ALPHA 0x0a
|
||||||
|
#define GR_CMBX_LOCAL_TEXTURE_RGB 0x0b
|
||||||
|
#define GR_CMBX_LOD_FRAC 0x0c
|
||||||
|
#define GR_CMBX_OTHER_TEXTURE_ALPHA 0x0d
|
||||||
|
#define GR_CMBX_OTHER_TEXTURE_RGB 0x0e
|
||||||
|
#define GR_CMBX_TEXTURE_RGB 0x0f
|
||||||
|
#define GR_CMBX_TMU_CALPHA 0x10
|
||||||
|
#define GR_CMBX_TMU_CCOLOR 0x11
|
||||||
|
|
||||||
|
typedef FxU32 GrCombineMode_t;
|
||||||
|
#define GR_FUNC_MODE_ZERO 0x00
|
||||||
|
#define GR_FUNC_MODE_X 0x01
|
||||||
|
#define GR_FUNC_MODE_ONE_MINUS_X 0x02
|
||||||
|
#define GR_FUNC_MODE_NEGATIVE_X 0x03
|
||||||
|
#define GR_FUNC_MODE_X_MINUS_HALF 0x04
|
||||||
|
|
||||||
|
typedef FxU32 GrAlphaBlendOp_t;
|
||||||
|
#define GR_BLEND_OP_ADD 0x00
|
||||||
|
#define GR_BLEND_OP_SUB 0x01
|
||||||
|
#define GR_BLEND_OP_REVSUB 0x02
|
||||||
|
|
||||||
|
#define GR_BLEND_SAME_COLOR_EXT 0x08
|
||||||
|
#define GR_BLEND_ONE_MINUS_SAME_COLOR_EXT 0x09
|
||||||
|
|
||||||
|
/* Napalm extensions to GrTextureFormat_t */
|
||||||
|
#define GR_TEXFMT_ARGB_CMP_FXT1 0x11
|
||||||
|
#define GR_TEXFMT_ARGB_8888 0x12
|
||||||
|
#define GR_TEXFMT_YUYV_422 0x13
|
||||||
|
#define GR_TEXFMT_UYVY_422 0x14
|
||||||
|
#define GR_TEXFMT_AYUV_444 0x15
|
||||||
|
#define GR_TEXFMT_ARGB_CMP_DXT1 0x16
|
||||||
|
#define GR_TEXFMT_ARGB_CMP_DXT2 0x17
|
||||||
|
#define GR_TEXFMT_ARGB_CMP_DXT3 0x18
|
||||||
|
#define GR_TEXFMT_ARGB_CMP_DXT4 0x19
|
||||||
|
#define GR_TEXFMT_ARGB_CMP_DXT5 0x1A
|
||||||
|
#define GR_TEXTFMT_RGB_888 0xFF
|
||||||
|
|
||||||
|
/* Napalm extensions to GrLOD_t */
|
||||||
|
#define GR_LOD_LOG2_2048 0xb
|
||||||
|
#define GR_LOD_LOG2_1024 0xa
|
||||||
|
#define GR_LOD_LOG2_512 0x9
|
||||||
|
|
||||||
|
/* Napalm extensions to GrTexBaseRange_t */
|
||||||
|
#define GR_TEXBASE_2048 0x7
|
||||||
|
#define GR_TEXBASE_1024 0x6
|
||||||
|
#define GR_TEXBASE_512 0x5
|
||||||
|
#define GR_TEXBASE_256_TO_1 0x4
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <glideutl.h>
|
||||||
|
|
||||||
|
#endif /* __H3EXT_H__ */
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,946 @@
|
||||||
|
/*
|
||||||
|
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||||
|
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||||
|
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||||
|
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||||
|
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||||
|
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||||
|
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||||
|
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||||
|
**
|
||||||
|
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||||
|
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (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, DOD OR NASA FAR
|
||||||
|
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||||
|
** THE UNITED STATES.
|
||||||
|
**
|
||||||
|
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
** GLIDE.H
|
||||||
|
**
|
||||||
|
** The following #defines are relevant when using Glide:
|
||||||
|
**
|
||||||
|
** One of the following "platform constants" must be defined during
|
||||||
|
** compilation:
|
||||||
|
**
|
||||||
|
** __DOS__ Defined for 32-bit DOS applications
|
||||||
|
** __WIN32__ Defined for 32-bit Windows applications
|
||||||
|
** __sparc__ Defined for Sun Solaris/SunOS
|
||||||
|
** __linux__ Defined for Linux applications
|
||||||
|
** __FreeBSD__ Defined for FreeBSD applications
|
||||||
|
** __NetBSD__ Defined for NetBSD applications
|
||||||
|
** __OpenBSD__ Defined for OpenBSD applications
|
||||||
|
** __IRIX__ Defined for SGI Irix applications
|
||||||
|
**
|
||||||
|
*/
|
||||||
|
#ifndef __GLIDE_H__
|
||||||
|
#define __GLIDE_H__
|
||||||
|
|
||||||
|
#include <3dfx.h>
|
||||||
|
#include <glidesys.h>
|
||||||
|
#include <sst1vid.h>
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
** -----------------------------------------------------------------------
|
||||||
|
** TYPE DEFINITIONS
|
||||||
|
** -----------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
typedef FxU32 GrColor_t;
|
||||||
|
typedef FxU8 GrAlpha_t;
|
||||||
|
typedef FxU32 GrMipMapId_t;
|
||||||
|
typedef FxU32 GrStipplePattern_t;
|
||||||
|
typedef FxU8 GrFog_t;
|
||||||
|
typedef FxU32 GrContext_t;
|
||||||
|
typedef int (FX_CALL *GrProc)();
|
||||||
|
|
||||||
|
/*
|
||||||
|
** -----------------------------------------------------------------------
|
||||||
|
** CONSTANTS AND TYPES
|
||||||
|
** -----------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
#define GR_NULL_MIPMAP_HANDLE ((GrMipMapId_t) -1)
|
||||||
|
|
||||||
|
#define GR_MIPMAPLEVELMASK_EVEN FXBIT(0)
|
||||||
|
#define GR_MIPMAPLEVELMASK_ODD FXBIT(1)
|
||||||
|
#define GR_MIPMAPLEVELMASK_BOTH (GR_MIPMAPLEVELMASK_EVEN | GR_MIPMAPLEVELMASK_ODD )
|
||||||
|
|
||||||
|
#define GR_LODBIAS_BILINEAR 0.5
|
||||||
|
#define GR_LODBIAS_TRILINEAR 0.0
|
||||||
|
|
||||||
|
typedef FxI32 GrChipID_t;
|
||||||
|
#define GR_TMU0 0x0
|
||||||
|
#define GR_TMU1 0x1
|
||||||
|
#define GR_TMU2 0x2
|
||||||
|
|
||||||
|
#define GR_FBI 0x0
|
||||||
|
|
||||||
|
typedef FxI32 GrCombineFunction_t;
|
||||||
|
#define GR_COMBINE_FUNCTION_ZERO 0x0
|
||||||
|
#define GR_COMBINE_FUNCTION_NONE GR_COMBINE_FUNCTION_ZERO
|
||||||
|
#define GR_COMBINE_FUNCTION_LOCAL 0x1
|
||||||
|
#define GR_COMBINE_FUNCTION_LOCAL_ALPHA 0x2
|
||||||
|
#define GR_COMBINE_FUNCTION_SCALE_OTHER 0x3
|
||||||
|
#define GR_COMBINE_FUNCTION_BLEND_OTHER GR_COMBINE_FUNCTION_SCALE_OTHER
|
||||||
|
#define GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL 0x4
|
||||||
|
#define GR_COMBINE_FUNCTION_SCALE_OTHER_ADD_LOCAL_ALPHA 0x5
|
||||||
|
#define GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL 0x6
|
||||||
|
#define GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL 0x7
|
||||||
|
#define GR_COMBINE_FUNCTION_BLEND GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL
|
||||||
|
#define GR_COMBINE_FUNCTION_SCALE_OTHER_MINUS_LOCAL_ADD_LOCAL_ALPHA 0x8
|
||||||
|
#define GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL 0x9
|
||||||
|
#define GR_COMBINE_FUNCTION_BLEND_LOCAL GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL
|
||||||
|
#define GR_COMBINE_FUNCTION_SCALE_MINUS_LOCAL_ADD_LOCAL_ALPHA 0x10
|
||||||
|
|
||||||
|
typedef FxI32 GrCombineFactor_t;
|
||||||
|
#define GR_COMBINE_FACTOR_ZERO 0x0
|
||||||
|
#define GR_COMBINE_FACTOR_NONE GR_COMBINE_FACTOR_ZERO
|
||||||
|
#define GR_COMBINE_FACTOR_LOCAL 0x1
|
||||||
|
#define GR_COMBINE_FACTOR_OTHER_ALPHA 0x2
|
||||||
|
#define GR_COMBINE_FACTOR_LOCAL_ALPHA 0x3
|
||||||
|
#define GR_COMBINE_FACTOR_TEXTURE_ALPHA 0x4
|
||||||
|
#define GR_COMBINE_FACTOR_TEXTURE_RGB 0x5
|
||||||
|
#define GR_COMBINE_FACTOR_DETAIL_FACTOR GR_COMBINE_FACTOR_TEXTURE_ALPHA
|
||||||
|
#define GR_COMBINE_FACTOR_LOD_FRACTION 0x5
|
||||||
|
#define GR_COMBINE_FACTOR_ONE 0x8
|
||||||
|
#define GR_COMBINE_FACTOR_ONE_MINUS_LOCAL 0x9
|
||||||
|
#define GR_COMBINE_FACTOR_ONE_MINUS_OTHER_ALPHA 0xa
|
||||||
|
#define GR_COMBINE_FACTOR_ONE_MINUS_LOCAL_ALPHA 0xb
|
||||||
|
#define GR_COMBINE_FACTOR_ONE_MINUS_TEXTURE_ALPHA 0xc
|
||||||
|
#define GR_COMBINE_FACTOR_ONE_MINUS_DETAIL_FACTOR GR_COMBINE_FACTOR_ONE_MINUS_TEXTURE_ALPHA
|
||||||
|
#define GR_COMBINE_FACTOR_ONE_MINUS_LOD_FRACTION 0xd
|
||||||
|
|
||||||
|
|
||||||
|
typedef FxI32 GrCombineLocal_t;
|
||||||
|
#define GR_COMBINE_LOCAL_ITERATED 0x0
|
||||||
|
#define GR_COMBINE_LOCAL_CONSTANT 0x1
|
||||||
|
#define GR_COMBINE_LOCAL_NONE GR_COMBINE_LOCAL_CONSTANT
|
||||||
|
#define GR_COMBINE_LOCAL_DEPTH 0x2
|
||||||
|
|
||||||
|
typedef FxI32 GrCombineOther_t;
|
||||||
|
#define GR_COMBINE_OTHER_ITERATED 0x0
|
||||||
|
#define GR_COMBINE_OTHER_TEXTURE 0x1
|
||||||
|
#define GR_COMBINE_OTHER_CONSTANT 0x2
|
||||||
|
#define GR_COMBINE_OTHER_NONE GR_COMBINE_OTHER_CONSTANT
|
||||||
|
|
||||||
|
|
||||||
|
typedef FxI32 GrAlphaSource_t;
|
||||||
|
#define GR_ALPHASOURCE_CC_ALPHA 0x0
|
||||||
|
#define GR_ALPHASOURCE_ITERATED_ALPHA 0x1
|
||||||
|
#define GR_ALPHASOURCE_TEXTURE_ALPHA 0x2
|
||||||
|
#define GR_ALPHASOURCE_TEXTURE_ALPHA_TIMES_ITERATED_ALPHA 0x3
|
||||||
|
|
||||||
|
|
||||||
|
typedef FxI32 GrColorCombineFnc_t;
|
||||||
|
#define GR_COLORCOMBINE_ZERO 0x0
|
||||||
|
#define GR_COLORCOMBINE_CCRGB 0x1
|
||||||
|
#define GR_COLORCOMBINE_ITRGB 0x2
|
||||||
|
#define GR_COLORCOMBINE_ITRGB_DELTA0 0x3
|
||||||
|
#define GR_COLORCOMBINE_DECAL_TEXTURE 0x4
|
||||||
|
#define GR_COLORCOMBINE_TEXTURE_TIMES_CCRGB 0x5
|
||||||
|
#define GR_COLORCOMBINE_TEXTURE_TIMES_ITRGB 0x6
|
||||||
|
#define GR_COLORCOMBINE_TEXTURE_TIMES_ITRGB_DELTA0 0x7
|
||||||
|
#define GR_COLORCOMBINE_TEXTURE_TIMES_ITRGB_ADD_ALPHA 0x8
|
||||||
|
#define GR_COLORCOMBINE_TEXTURE_TIMES_ALPHA 0x9
|
||||||
|
#define GR_COLORCOMBINE_TEXTURE_TIMES_ALPHA_ADD_ITRGB 0xa
|
||||||
|
#define GR_COLORCOMBINE_TEXTURE_ADD_ITRGB 0xb
|
||||||
|
#define GR_COLORCOMBINE_TEXTURE_SUB_ITRGB 0xc
|
||||||
|
#define GR_COLORCOMBINE_CCRGB_BLEND_ITRGB_ON_TEXALPHA 0xd
|
||||||
|
#define GR_COLORCOMBINE_DIFF_SPEC_A 0xe
|
||||||
|
#define GR_COLORCOMBINE_DIFF_SPEC_B 0xf
|
||||||
|
#define GR_COLORCOMBINE_ONE 0x10
|
||||||
|
|
||||||
|
typedef FxI32 GrAlphaBlendFnc_t;
|
||||||
|
#define GR_BLEND_ZERO 0x0
|
||||||
|
#define GR_BLEND_SRC_ALPHA 0x1
|
||||||
|
#define GR_BLEND_SRC_COLOR 0x2
|
||||||
|
#define GR_BLEND_DST_COLOR GR_BLEND_SRC_COLOR
|
||||||
|
#define GR_BLEND_DST_ALPHA 0x3
|
||||||
|
#define GR_BLEND_ONE 0x4
|
||||||
|
#define GR_BLEND_ONE_MINUS_SRC_ALPHA 0x5
|
||||||
|
#define GR_BLEND_ONE_MINUS_SRC_COLOR 0x6
|
||||||
|
#define GR_BLEND_ONE_MINUS_DST_COLOR GR_BLEND_ONE_MINUS_SRC_COLOR
|
||||||
|
#define GR_BLEND_ONE_MINUS_DST_ALPHA 0x7
|
||||||
|
#define GR_BLEND_RESERVED_8 0x8
|
||||||
|
#define GR_BLEND_RESERVED_9 0x9
|
||||||
|
#define GR_BLEND_RESERVED_A 0xa
|
||||||
|
#define GR_BLEND_RESERVED_B 0xb
|
||||||
|
#define GR_BLEND_RESERVED_C 0xc
|
||||||
|
#define GR_BLEND_RESERVED_D 0xd
|
||||||
|
#define GR_BLEND_RESERVED_E 0xe
|
||||||
|
#define GR_BLEND_ALPHA_SATURATE 0xf
|
||||||
|
#define GR_BLEND_PREFOG_COLOR GR_BLEND_ALPHA_SATURATE
|
||||||
|
|
||||||
|
typedef FxI32 GrAspectRatio_t;
|
||||||
|
#define GR_ASPECT_LOG2_8x1 3 /* 8W x 1H */
|
||||||
|
#define GR_ASPECT_LOG2_4x1 2 /* 4W x 1H */
|
||||||
|
#define GR_ASPECT_LOG2_2x1 1 /* 2W x 1H */
|
||||||
|
#define GR_ASPECT_LOG2_1x1 0 /* 1W x 1H */
|
||||||
|
#define GR_ASPECT_LOG2_1x2 -1 /* 1W x 2H */
|
||||||
|
#define GR_ASPECT_LOG2_1x4 -2 /* 1W x 4H */
|
||||||
|
#define GR_ASPECT_LOG2_1x8 -3 /* 1W x 8H */
|
||||||
|
|
||||||
|
typedef FxI32 GrBuffer_t;
|
||||||
|
#define GR_BUFFER_FRONTBUFFER 0x0
|
||||||
|
#define GR_BUFFER_BACKBUFFER 0x1
|
||||||
|
#define GR_BUFFER_AUXBUFFER 0x2
|
||||||
|
#define GR_BUFFER_DEPTHBUFFER 0x3
|
||||||
|
#define GR_BUFFER_ALPHABUFFER 0x4
|
||||||
|
#define GR_BUFFER_TRIPLEBUFFER 0x5
|
||||||
|
|
||||||
|
typedef FxI32 GrChromakeyMode_t;
|
||||||
|
#define GR_CHROMAKEY_DISABLE 0x0
|
||||||
|
#define GR_CHROMAKEY_ENABLE 0x1
|
||||||
|
|
||||||
|
typedef FxI32 GrChromaRangeMode_t;
|
||||||
|
#define GR_CHROMARANGE_RGB_ALL_EXT 0x0
|
||||||
|
|
||||||
|
#define GR_CHROMARANGE_DISABLE_EXT 0x00
|
||||||
|
#define GR_CHROMARANGE_ENABLE_EXT 0x01
|
||||||
|
|
||||||
|
typedef FxI32 GrTexChromakeyMode_t;
|
||||||
|
#define GR_TEXCHROMA_DISABLE_EXT 0x0
|
||||||
|
#define GR_TEXCHROMA_ENABLE_EXT 0x1
|
||||||
|
|
||||||
|
#define GR_TEXCHROMARANGE_RGB_ALL_EXT 0x0
|
||||||
|
|
||||||
|
typedef FxI32 GrCmpFnc_t;
|
||||||
|
#define GR_CMP_NEVER 0x0
|
||||||
|
#define GR_CMP_LESS 0x1
|
||||||
|
#define GR_CMP_EQUAL 0x2
|
||||||
|
#define GR_CMP_LEQUAL 0x3
|
||||||
|
#define GR_CMP_GREATER 0x4
|
||||||
|
#define GR_CMP_NOTEQUAL 0x5
|
||||||
|
#define GR_CMP_GEQUAL 0x6
|
||||||
|
#define GR_CMP_ALWAYS 0x7
|
||||||
|
|
||||||
|
typedef FxI32 GrColorFormat_t;
|
||||||
|
#define GR_COLORFORMAT_ARGB 0x0
|
||||||
|
#define GR_COLORFORMAT_ABGR 0x1
|
||||||
|
|
||||||
|
#define GR_COLORFORMAT_RGBA 0x2
|
||||||
|
#define GR_COLORFORMAT_BGRA 0x3
|
||||||
|
|
||||||
|
typedef FxI32 GrCullMode_t;
|
||||||
|
#define GR_CULL_DISABLE 0x0
|
||||||
|
#define GR_CULL_NEGATIVE 0x1
|
||||||
|
#define GR_CULL_POSITIVE 0x2
|
||||||
|
|
||||||
|
typedef FxI32 GrDepthBufferMode_t;
|
||||||
|
#define GR_DEPTHBUFFER_DISABLE 0x0
|
||||||
|
#define GR_DEPTHBUFFER_ZBUFFER 0x1
|
||||||
|
#define GR_DEPTHBUFFER_WBUFFER 0x2
|
||||||
|
#define GR_DEPTHBUFFER_ZBUFFER_COMPARE_TO_BIAS 0x3
|
||||||
|
#define GR_DEPTHBUFFER_WBUFFER_COMPARE_TO_BIAS 0x4
|
||||||
|
|
||||||
|
typedef FxI32 GrDitherMode_t;
|
||||||
|
#define GR_DITHER_DISABLE 0x0
|
||||||
|
#define GR_DITHER_2x2 0x1
|
||||||
|
#define GR_DITHER_4x4 0x2
|
||||||
|
|
||||||
|
typedef FxI32 GrStippleMode_t;
|
||||||
|
#define GR_STIPPLE_DISABLE 0x0
|
||||||
|
#define GR_STIPPLE_PATTERN 0x1
|
||||||
|
#define GR_STIPPLE_ROTATE 0x2
|
||||||
|
|
||||||
|
typedef FxI32 GrFogMode_t;
|
||||||
|
#define GR_FOG_DISABLE 0x0
|
||||||
|
#define GR_FOG_WITH_TABLE_ON_FOGCOORD_EXT 0x1
|
||||||
|
#define GR_FOG_WITH_TABLE_ON_Q 0x2
|
||||||
|
#define GR_FOG_WITH_TABLE_ON_W GR_FOG_WITH_TABLE_ON_Q
|
||||||
|
#define GR_FOG_WITH_ITERATED_Z 0x3
|
||||||
|
#define GR_FOG_WITH_ITERATED_ALPHA_EXT 0x4
|
||||||
|
#define GR_FOG_MULT2 0x100
|
||||||
|
#define GR_FOG_ADD2 0x200
|
||||||
|
|
||||||
|
typedef FxU32 GrLock_t;
|
||||||
|
#define GR_LFB_READ_ONLY 0x00
|
||||||
|
#define GR_LFB_WRITE_ONLY 0x01
|
||||||
|
#define GR_LFB_IDLE 0x00
|
||||||
|
#define GR_LFB_NOIDLE 0x10
|
||||||
|
|
||||||
|
#define GR_LFB_WRITE_ONLY_EXPLICIT_EXT 0x02 /* explicitly not allow reading from the lfb pointer */
|
||||||
|
|
||||||
|
typedef FxI32 GrLfbBypassMode_t;
|
||||||
|
#define GR_LFBBYPASS_DISABLE 0x0
|
||||||
|
#define GR_LFBBYPASS_ENABLE 0x1
|
||||||
|
|
||||||
|
typedef FxI32 GrLfbWriteMode_t;
|
||||||
|
#define GR_LFBWRITEMODE_565 0x0 /* RGB:RGB */
|
||||||
|
#define GR_LFBWRITEMODE_555 0x1 /* RGB:RGB */
|
||||||
|
#define GR_LFBWRITEMODE_1555 0x2 /* ARGB:ARGB */
|
||||||
|
#define GR_LFBWRITEMODE_RESERVED1 0x3
|
||||||
|
#define GR_LFBWRITEMODE_888 0x4 /* RGB */
|
||||||
|
#define GR_LFBWRITEMODE_8888 0x5 /* ARGB */
|
||||||
|
#define GR_LFBWRITEMODE_RESERVED2 0x6
|
||||||
|
#define GR_LFBWRITEMODE_RESERVED3 0x7
|
||||||
|
#define GR_LFBWRITEMODE_RESERVED4 0x8
|
||||||
|
#define GR_LFBWRITEMODE_RESERVED5 0x9
|
||||||
|
#define GR_LFBWRITEMODE_RESERVED6 0xa
|
||||||
|
#define GR_LFBWRITEMODE_RESERVED7 0xb
|
||||||
|
#define GR_LFBWRITEMODE_565_DEPTH 0xc /* RGB:DEPTH */
|
||||||
|
#define GR_LFBWRITEMODE_555_DEPTH 0xd /* RGB:DEPTH */
|
||||||
|
#define GR_LFBWRITEMODE_1555_DEPTH 0xe /* ARGB:DEPTH */
|
||||||
|
#define GR_LFBWRITEMODE_ZA16 0xf /* DEPTH:DEPTH */
|
||||||
|
#define GR_LFBWRITEMODE_ANY 0xFF
|
||||||
|
|
||||||
|
|
||||||
|
typedef FxI32 GrOriginLocation_t;
|
||||||
|
#define GR_ORIGIN_UPPER_LEFT 0x0
|
||||||
|
#define GR_ORIGIN_LOWER_LEFT 0x1
|
||||||
|
#define GR_ORIGIN_ANY 0xFF
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
int size;
|
||||||
|
void *lfbPtr;
|
||||||
|
FxU32 strideInBytes;
|
||||||
|
GrLfbWriteMode_t writeMode;
|
||||||
|
GrOriginLocation_t origin;
|
||||||
|
} GrLfbInfo_t;
|
||||||
|
|
||||||
|
typedef FxI32 GrLOD_t;
|
||||||
|
#define GR_LOD_LOG2_256 0x8
|
||||||
|
#define GR_LOD_LOG2_128 0x7
|
||||||
|
#define GR_LOD_LOG2_64 0x6
|
||||||
|
#define GR_LOD_LOG2_32 0x5
|
||||||
|
#define GR_LOD_LOG2_16 0x4
|
||||||
|
#define GR_LOD_LOG2_8 0x3
|
||||||
|
#define GR_LOD_LOG2_4 0x2
|
||||||
|
#define GR_LOD_LOG2_2 0x1
|
||||||
|
#define GR_LOD_LOG2_1 0x0
|
||||||
|
|
||||||
|
typedef FxI32 GrMipMapMode_t;
|
||||||
|
#define GR_MIPMAP_DISABLE 0x0 /* no mip mapping */
|
||||||
|
#define GR_MIPMAP_NEAREST 0x1 /* use nearest mipmap */
|
||||||
|
#define GR_MIPMAP_NEAREST_DITHER 0x2 /* GR_MIPMAP_NEAREST + LOD dith */
|
||||||
|
|
||||||
|
typedef FxI32 GrSmoothingMode_t;
|
||||||
|
#define GR_SMOOTHING_DISABLE 0x0
|
||||||
|
#define GR_SMOOTHING_ENABLE 0x1
|
||||||
|
|
||||||
|
typedef FxI32 GrTextureClampMode_t;
|
||||||
|
#define GR_TEXTURECLAMP_WRAP 0x0
|
||||||
|
#define GR_TEXTURECLAMP_CLAMP 0x1
|
||||||
|
#define GR_TEXTURECLAMP_MIRROR_EXT 0x2
|
||||||
|
|
||||||
|
typedef FxI32 GrTextureCombineFnc_t;
|
||||||
|
#define GR_TEXTURECOMBINE_ZERO 0x0 /* texout = 0 */
|
||||||
|
#define GR_TEXTURECOMBINE_DECAL 0x1 /* texout = texthis */
|
||||||
|
#define GR_TEXTURECOMBINE_OTHER 0x2 /* this TMU in passthru mode */
|
||||||
|
#define GR_TEXTURECOMBINE_ADD 0x3 /* tout = tthis + t(this+1) */
|
||||||
|
#define GR_TEXTURECOMBINE_MULTIPLY 0x4 /* texout = tthis * t(this+1) */
|
||||||
|
#define GR_TEXTURECOMBINE_SUBTRACT 0x5 /* Sutract from upstream TMU */
|
||||||
|
#define GR_TEXTURECOMBINE_DETAIL 0x6 /* detail--detail on tthis */
|
||||||
|
#define GR_TEXTURECOMBINE_DETAIL_OTHER 0x7 /* detail--detail on tthis+1 */
|
||||||
|
#define GR_TEXTURECOMBINE_TRILINEAR_ODD 0x8 /* trilinear--odd levels tthis*/
|
||||||
|
#define GR_TEXTURECOMBINE_TRILINEAR_EVEN 0x9 /*trilinear--even levels tthis*/
|
||||||
|
#define GR_TEXTURECOMBINE_ONE 0xa /* texout = 0xFFFFFFFF */
|
||||||
|
|
||||||
|
typedef FxI32 GrTextureFilterMode_t;
|
||||||
|
#define GR_TEXTUREFILTER_POINT_SAMPLED 0x0
|
||||||
|
#define GR_TEXTUREFILTER_BILINEAR 0x1
|
||||||
|
|
||||||
|
typedef FxI32 GrTextureFormat_t;
|
||||||
|
/* KoolSmoky - */
|
||||||
|
#define GR_TEXFMT_8BIT 0x0
|
||||||
|
#define GR_TEXFMT_RGB_332 GR_TEXFMT_8BIT
|
||||||
|
#define GR_TEXFMT_YIQ_422 0x1
|
||||||
|
#define GR_TEXFMT_ALPHA_8 0x2 /* (0..0xFF) alpha */
|
||||||
|
#define GR_TEXFMT_INTENSITY_8 0x3 /* (0..0xFF) intensity */
|
||||||
|
#define GR_TEXFMT_ALPHA_INTENSITY_44 0x4
|
||||||
|
#define GR_TEXFMT_P_8 0x5 /* 8-bit palette */
|
||||||
|
#define GR_TEXFMT_RSVD0 0x6 /* GR_TEXFMT_P_8_RGBA */
|
||||||
|
#define GR_TEXFMT_P_8_6666 GR_TEXFMT_RSVD0
|
||||||
|
#define GR_TEXFMT_P_8_6666_EXT GR_TEXFMT_RSVD0
|
||||||
|
#define GR_TEXFMT_RSVD1 0x7
|
||||||
|
#define GR_TEXFMT_16BIT 0x8
|
||||||
|
#define GR_TEXFMT_ARGB_8332 GR_TEXFMT_16BIT
|
||||||
|
#define GR_TEXFMT_AYIQ_8422 0x9
|
||||||
|
#define GR_TEXFMT_RGB_565 0xa
|
||||||
|
#define GR_TEXFMT_ARGB_1555 0xb
|
||||||
|
#define GR_TEXFMT_ARGB_4444 0xc
|
||||||
|
#define GR_TEXFMT_ALPHA_INTENSITY_88 0xd
|
||||||
|
#define GR_TEXFMT_AP_88 0xe /* 8-bit alpha 8-bit palette */
|
||||||
|
#define GR_TEXFMT_RSVD2 0xf
|
||||||
|
#define GR_TEXFMT_RSVD4 GR_TEXFMT_RSVD2
|
||||||
|
|
||||||
|
typedef FxU32 GrTexTable_t;
|
||||||
|
#define GR_TEXTABLE_NCC0 0x0
|
||||||
|
#define GR_TEXTABLE_NCC1 0x1
|
||||||
|
#define GR_TEXTABLE_PALETTE 0x2
|
||||||
|
#define GR_TEXTABLE_PALETTE_6666_EXT 0x3
|
||||||
|
|
||||||
|
typedef FxU32 GrNCCTable_t;
|
||||||
|
#define GR_NCCTABLE_NCC0 0x0
|
||||||
|
#define GR_NCCTABLE_NCC1 0x1
|
||||||
|
|
||||||
|
typedef FxU32 GrTexBaseRange_t;
|
||||||
|
#define GR_TEXBASE_256 0x3
|
||||||
|
#define GR_TEXBASE_128 0x2
|
||||||
|
#define GR_TEXBASE_64 0x1
|
||||||
|
#define GR_TEXBASE_32_TO_1 0x0
|
||||||
|
|
||||||
|
|
||||||
|
typedef FxU32 GrEnableMode_t;
|
||||||
|
#define GR_MODE_DISABLE 0x0
|
||||||
|
#define GR_MODE_ENABLE 0x1
|
||||||
|
|
||||||
|
#define GR_AA_ORDERED 0x01
|
||||||
|
#define GR_ALLOW_MIPMAP_DITHER 0x02
|
||||||
|
#define GR_PASSTHRU 0x03
|
||||||
|
#define GR_SHAMELESS_PLUG 0x04
|
||||||
|
#define GR_VIDEO_SMOOTHING 0x05
|
||||||
|
|
||||||
|
typedef FxU32 GrCoordinateSpaceMode_t;
|
||||||
|
#define GR_WINDOW_COORDS 0x00
|
||||||
|
#define GR_CLIP_COORDS 0x01
|
||||||
|
|
||||||
|
/* Types of data in strips */
|
||||||
|
#define GR_FLOAT 0
|
||||||
|
#define GR_U8 1
|
||||||
|
|
||||||
|
/* Parameters for strips */
|
||||||
|
#define GR_PARAM_XY 0x01
|
||||||
|
#define GR_PARAM_Z 0x02
|
||||||
|
#define GR_PARAM_W 0x03
|
||||||
|
#define GR_PARAM_Q 0x04
|
||||||
|
#define GR_PARAM_FOG_EXT 0x05
|
||||||
|
|
||||||
|
#define GR_PARAM_A 0x10
|
||||||
|
|
||||||
|
#define GR_PARAM_RGB 0x20
|
||||||
|
|
||||||
|
#define GR_PARAM_PARGB 0x30
|
||||||
|
|
||||||
|
#define GR_PARAM_ST0 0x40
|
||||||
|
#define GR_PARAM_ST1 GR_PARAM_ST0+1
|
||||||
|
#define GR_PARAM_ST2 GR_PARAM_ST0+2
|
||||||
|
|
||||||
|
#define GR_PARAM_Q0 0x50
|
||||||
|
#define GR_PARAM_Q1 GR_PARAM_Q0+1
|
||||||
|
#define GR_PARAM_Q2 GR_PARAM_Q0+2
|
||||||
|
|
||||||
|
#define GR_PARAM_DISABLE 0x00
|
||||||
|
#define GR_PARAM_ENABLE 0x01
|
||||||
|
|
||||||
|
/*
|
||||||
|
** grDrawVertexArray/grDrawVertexArrayContiguous primitive type
|
||||||
|
*/
|
||||||
|
#define GR_POINTS 0
|
||||||
|
#define GR_LINE_STRIP 1
|
||||||
|
#define GR_LINES 2
|
||||||
|
#define GR_POLYGON 3
|
||||||
|
#define GR_TRIANGLE_STRIP 4
|
||||||
|
#define GR_TRIANGLE_FAN 5
|
||||||
|
#define GR_TRIANGLES 6
|
||||||
|
#define GR_TRIANGLE_STRIP_CONTINUE 7
|
||||||
|
#define GR_TRIANGLE_FAN_CONTINUE 8
|
||||||
|
|
||||||
|
/*
|
||||||
|
** grGet/grReset types
|
||||||
|
*/
|
||||||
|
#define GR_BITS_DEPTH 0x01
|
||||||
|
#define GR_BITS_RGBA 0x02
|
||||||
|
#define GR_FIFO_FULLNESS 0x03
|
||||||
|
#define GR_FOG_TABLE_ENTRIES 0x04
|
||||||
|
#define GR_GAMMA_TABLE_ENTRIES 0x05
|
||||||
|
#define GR_GLIDE_STATE_SIZE 0x06
|
||||||
|
#define GR_GLIDE_VERTEXLAYOUT_SIZE 0x07
|
||||||
|
#define GR_IS_BUSY 0x08
|
||||||
|
#define GR_LFB_PIXEL_PIPE 0x09
|
||||||
|
#define GR_MAX_TEXTURE_SIZE 0x0a
|
||||||
|
#define GR_MAX_TEXTURE_ASPECT_RATIO 0x0b
|
||||||
|
#define GR_MEMORY_FB 0x0c
|
||||||
|
#define GR_MEMORY_TMU 0x0d
|
||||||
|
#define GR_MEMORY_UMA 0x0e
|
||||||
|
#define GR_NUM_BOARDS 0x0f
|
||||||
|
#define GR_NON_POWER_OF_TWO_TEXTURES 0x10
|
||||||
|
#define GR_NUM_FB 0x11
|
||||||
|
#define GR_NUM_SWAP_HISTORY_BUFFER 0x12
|
||||||
|
#define GR_NUM_TMU 0x13
|
||||||
|
#define GR_PENDING_BUFFERSWAPS 0x14
|
||||||
|
#define GR_REVISION_FB 0x15
|
||||||
|
#define GR_REVISION_TMU 0x16
|
||||||
|
#define GR_STATS_LINES 0x17 /* grGet/grReset */
|
||||||
|
#define GR_STATS_PIXELS_AFUNC_FAIL 0x18
|
||||||
|
#define GR_STATS_PIXELS_CHROMA_FAIL 0x19
|
||||||
|
#define GR_STATS_PIXELS_DEPTHFUNC_FAIL 0x1a
|
||||||
|
#define GR_STATS_PIXELS_IN 0x1b
|
||||||
|
#define GR_STATS_PIXELS_OUT 0x1c
|
||||||
|
#define GR_STATS_PIXELS 0x1d /* grReset */
|
||||||
|
#define GR_STATS_POINTS 0x1e /* grGet/grReset */
|
||||||
|
#define GR_STATS_TRIANGLES_IN 0x1f
|
||||||
|
#define GR_STATS_TRIANGLES_OUT 0x20
|
||||||
|
#define GR_STATS_TRIANGLES 0x21 /* grReset */
|
||||||
|
#define GR_SWAP_HISTORY 0x22
|
||||||
|
#define GR_SUPPORTS_PASSTHRU 0x23
|
||||||
|
#define GR_TEXTURE_ALIGN 0x24
|
||||||
|
#define GR_VIDEO_POSITION 0x25
|
||||||
|
#define GR_VIEWPORT 0x26
|
||||||
|
#define GR_WDEPTH_MIN_MAX 0x27
|
||||||
|
#define GR_ZDEPTH_MIN_MAX 0x28
|
||||||
|
#define GR_VERTEX_PARAMETER 0x29
|
||||||
|
#define GR_BITS_GAMMA 0x2a
|
||||||
|
#define GR_GET_RESERVED_1 0x1000
|
||||||
|
|
||||||
|
/*
|
||||||
|
** grGetString types
|
||||||
|
*/
|
||||||
|
#define GR_EXTENSION 0xa0
|
||||||
|
#define GR_HARDWARE 0xa1
|
||||||
|
#define GR_RENDERER 0xa2
|
||||||
|
#define GR_VENDOR 0xa3
|
||||||
|
#define GR_VERSION 0xa4
|
||||||
|
|
||||||
|
/*
|
||||||
|
** -----------------------------------------------------------------------
|
||||||
|
** STRUCTURES
|
||||||
|
** -----------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
GrLOD_t smallLodLog2;
|
||||||
|
GrLOD_t largeLodLog2;
|
||||||
|
GrAspectRatio_t aspectRatioLog2;
|
||||||
|
GrTextureFormat_t format;
|
||||||
|
void *data;
|
||||||
|
} GrTexInfo;
|
||||||
|
|
||||||
|
typedef struct GrSstPerfStats_s {
|
||||||
|
FxU32 pixelsIn; /* # pixels processed (minus buffer clears) */
|
||||||
|
FxU32 chromaFail; /* # pixels not drawn due to chroma key */
|
||||||
|
FxU32 zFuncFail; /* # pixels not drawn due to Z comparison */
|
||||||
|
FxU32 aFuncFail; /* # pixels not drawn due to alpha comparison */
|
||||||
|
FxU32 pixelsOut; /* # pixels drawn (including buffer clears) */
|
||||||
|
} GrSstPerfStats_t;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
GrScreenResolution_t resolution;
|
||||||
|
GrScreenRefresh_t refresh;
|
||||||
|
int numColorBuffers;
|
||||||
|
int numAuxBuffers;
|
||||||
|
} GrResolution;
|
||||||
|
|
||||||
|
typedef GrResolution GlideResolution;
|
||||||
|
|
||||||
|
#define GR_QUERY_ANY ((FxU32)(~0))
|
||||||
|
|
||||||
|
typedef FxU32 GrLfbSrcFmt_t;
|
||||||
|
#define GR_LFB_SRC_FMT_565 0x00
|
||||||
|
#define GR_LFB_SRC_FMT_555 0x01
|
||||||
|
#define GR_LFB_SRC_FMT_1555 0x02
|
||||||
|
#define GR_LFB_SRC_FMT_888 0x04
|
||||||
|
#define GR_LFB_SRC_FMT_8888 0x05
|
||||||
|
#define GR_LFB_SRC_FMT_565_DEPTH 0x0c
|
||||||
|
#define GR_LFB_SRC_FMT_555_DEPTH 0x0d
|
||||||
|
#define GR_LFB_SRC_FMT_1555_DEPTH 0x0e
|
||||||
|
#define GR_LFB_SRC_FMT_ZA16 0x0f
|
||||||
|
#define GR_LFB_SRC_FMT_RLE16 0x80
|
||||||
|
|
||||||
|
#ifdef H3D
|
||||||
|
#define GR_HINT_H3DENABLE 4
|
||||||
|
#undef GR_HINTTYPE_MAX
|
||||||
|
#define GR_HINTTYPE_MAX 4
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
** -----------------------------------------------------------------------
|
||||||
|
** FUNCTION PROTOTYPES
|
||||||
|
** -----------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
#ifndef FX_GLIDE_NO_FUNC_PROTO
|
||||||
|
/*
|
||||||
|
** rendering functions
|
||||||
|
*/
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grDrawPoint( const void *pt );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grDrawLine( const void *v1, const void *v2 );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grDrawTriangle( const void *a, const void *b, const void *c );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grVertexLayout(FxU32 param, FxI32 offset, FxU32 mode);
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grDrawVertexArray(FxU32 mode, FxU32 Count, void *pointers);
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grDrawVertexArrayContiguous(FxU32 mode, FxU32 Count, void *pointers, FxU32 stride);
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Antialiasing Functions
|
||||||
|
*/
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grAADrawTriangle(
|
||||||
|
const void *a, const void *b, const void *c,
|
||||||
|
FxBool ab_antialias, FxBool bc_antialias, FxBool ca_antialias
|
||||||
|
);
|
||||||
|
|
||||||
|
/*
|
||||||
|
** buffer management
|
||||||
|
*/
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grBufferClear( GrColor_t color, GrAlpha_t alpha, FxU32 depth );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grBufferSwap( FxU32 swap_interval );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grRenderBuffer( GrBuffer_t buffer );
|
||||||
|
|
||||||
|
/*
|
||||||
|
** error management
|
||||||
|
*/
|
||||||
|
typedef void (*GrErrorCallbackFnc_t)( const char *string, FxBool fatal );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grErrorSetCallback( GrErrorCallbackFnc_t fnc );
|
||||||
|
|
||||||
|
/*
|
||||||
|
** SST routines
|
||||||
|
*/
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grFinish(void);
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grFlush(void);
|
||||||
|
|
||||||
|
FX_ENTRY GrContext_t FX_CALL
|
||||||
|
grSstWinOpen(
|
||||||
|
FxU32 hWnd,
|
||||||
|
GrScreenResolution_t screen_resolution,
|
||||||
|
GrScreenRefresh_t refresh_rate,
|
||||||
|
GrColorFormat_t color_format,
|
||||||
|
GrOriginLocation_t origin_location,
|
||||||
|
int nColBuffers,
|
||||||
|
int nAuxBuffers);
|
||||||
|
|
||||||
|
FX_ENTRY FxBool FX_CALL
|
||||||
|
grSstWinClose( GrContext_t context );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grSetNumPendingBuffers(FxI32 NumPendingBuffers);
|
||||||
|
|
||||||
|
FX_ENTRY FxBool FX_CALL
|
||||||
|
grSelectContext( GrContext_t context );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grSstOrigin(GrOriginLocation_t origin);
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grSstSelect( int which_sst );
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Glide configuration and special effect maintenance functions
|
||||||
|
*/
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grAlphaBlendFunction(
|
||||||
|
GrAlphaBlendFnc_t rgb_sf, GrAlphaBlendFnc_t rgb_df,
|
||||||
|
GrAlphaBlendFnc_t alpha_sf, GrAlphaBlendFnc_t alpha_df
|
||||||
|
);
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grAlphaCombine(
|
||||||
|
GrCombineFunction_t function, GrCombineFactor_t factor,
|
||||||
|
GrCombineLocal_t local, GrCombineOther_t other,
|
||||||
|
FxBool invert
|
||||||
|
);
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grAlphaControlsITRGBLighting( FxBool enable );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grAlphaTestFunction( GrCmpFnc_t function );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grAlphaTestReferenceValue( GrAlpha_t value );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grChromakeyMode( GrChromakeyMode_t mode );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grChromakeyValue( GrColor_t value );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grClipWindow( FxU32 minx, FxU32 miny, FxU32 maxx, FxU32 maxy );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grColorCombine(
|
||||||
|
GrCombineFunction_t function, GrCombineFactor_t factor,
|
||||||
|
GrCombineLocal_t local, GrCombineOther_t other,
|
||||||
|
FxBool invert );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grColorMask( FxBool rgb, FxBool a );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grCullMode( GrCullMode_t mode );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grConstantColorValue( GrColor_t value );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grDepthBiasLevel( FxI32 level );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grDepthBufferFunction( GrCmpFnc_t function );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grDepthBufferMode( GrDepthBufferMode_t mode );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grDepthMask( FxBool mask );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grDisableAllEffects( void );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grDitherMode( GrDitherMode_t mode );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grFogColorValue( GrColor_t fogcolor );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grFogMode( GrFogMode_t mode );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grFogTable( const GrFog_t ft[] );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grLoadGammaTable( FxU32 nentries, FxU32 *red, FxU32 *green, FxU32 *blue);
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grSplash(float x, float y, float width, float height, FxU32 frame);
|
||||||
|
|
||||||
|
FX_ENTRY FxU32 FX_CALL
|
||||||
|
grGet( FxU32 pname, FxU32 plength, FxI32 *params );
|
||||||
|
|
||||||
|
FX_ENTRY const char * FX_CALL
|
||||||
|
grGetString( FxU32 pname );
|
||||||
|
|
||||||
|
FX_ENTRY FxI32 FX_CALL
|
||||||
|
grQueryResolutions( const GrResolution *resTemplate, GrResolution *output );
|
||||||
|
|
||||||
|
FX_ENTRY FxBool FX_CALL
|
||||||
|
grReset( FxU32 what );
|
||||||
|
|
||||||
|
FX_ENTRY GrProc FX_CALL
|
||||||
|
grGetProcAddress( char *procName );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grEnable( GrEnableMode_t mode );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grDisable( GrEnableMode_t mode );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grCoordinateSpace( GrCoordinateSpaceMode_t mode );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grDepthRange( FxFloat n, FxFloat f );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grStippleMode( GrStippleMode_t mode );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grStipplePattern( GrStipplePattern_t mode );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grViewport( FxI32 x, FxI32 y, FxI32 width, FxI32 height );
|
||||||
|
|
||||||
|
/*
|
||||||
|
** texture mapping control functions
|
||||||
|
*/
|
||||||
|
FX_ENTRY FxU32 FX_CALL
|
||||||
|
grTexCalcMemRequired(
|
||||||
|
GrLOD_t lodmin, GrLOD_t lodmax,
|
||||||
|
GrAspectRatio_t aspect, GrTextureFormat_t fmt);
|
||||||
|
|
||||||
|
FX_ENTRY FxU32 FX_CALL
|
||||||
|
grTexTextureMemRequired( FxU32 evenOdd,
|
||||||
|
GrTexInfo *info );
|
||||||
|
|
||||||
|
FX_ENTRY FxU32 FX_CALL
|
||||||
|
grTexMinAddress( GrChipID_t tmu );
|
||||||
|
|
||||||
|
FX_ENTRY FxU32 FX_CALL
|
||||||
|
grTexMaxAddress( GrChipID_t tmu );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grTexNCCTable( GrNCCTable_t table );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grTexSource( GrChipID_t tmu,
|
||||||
|
FxU32 startAddress,
|
||||||
|
FxU32 evenOdd,
|
||||||
|
GrTexInfo *info );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grTexClampMode(
|
||||||
|
GrChipID_t tmu,
|
||||||
|
GrTextureClampMode_t s_clampmode,
|
||||||
|
GrTextureClampMode_t t_clampmode
|
||||||
|
);
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grTexCombine(
|
||||||
|
GrChipID_t tmu,
|
||||||
|
GrCombineFunction_t rgb_function,
|
||||||
|
GrCombineFactor_t rgb_factor,
|
||||||
|
GrCombineFunction_t alpha_function,
|
||||||
|
GrCombineFactor_t alpha_factor,
|
||||||
|
FxBool rgb_invert,
|
||||||
|
FxBool alpha_invert
|
||||||
|
);
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grTexDetailControl(
|
||||||
|
GrChipID_t tmu,
|
||||||
|
int lod_bias,
|
||||||
|
FxU8 detail_scale,
|
||||||
|
float detail_max
|
||||||
|
);
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grTexFilterMode(
|
||||||
|
GrChipID_t tmu,
|
||||||
|
GrTextureFilterMode_t minfilter_mode,
|
||||||
|
GrTextureFilterMode_t magfilter_mode
|
||||||
|
);
|
||||||
|
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grTexLodBiasValue(GrChipID_t tmu, float bias );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grTexDownloadMipMap( GrChipID_t tmu,
|
||||||
|
FxU32 startAddress,
|
||||||
|
FxU32 evenOdd,
|
||||||
|
GrTexInfo *info );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grTexDownloadMipMapLevel( GrChipID_t tmu,
|
||||||
|
FxU32 startAddress,
|
||||||
|
GrLOD_t thisLod,
|
||||||
|
GrLOD_t largeLod,
|
||||||
|
GrAspectRatio_t aspectRatio,
|
||||||
|
GrTextureFormat_t format,
|
||||||
|
FxU32 evenOdd,
|
||||||
|
void *data );
|
||||||
|
|
||||||
|
FX_ENTRY FxBool FX_CALL
|
||||||
|
grTexDownloadMipMapLevelPartial( GrChipID_t tmu,
|
||||||
|
FxU32 startAddress,
|
||||||
|
GrLOD_t thisLod,
|
||||||
|
GrLOD_t largeLod,
|
||||||
|
GrAspectRatio_t aspectRatio,
|
||||||
|
GrTextureFormat_t format,
|
||||||
|
FxU32 evenOdd,
|
||||||
|
void *data,
|
||||||
|
int start,
|
||||||
|
int end );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grTexDownloadTable( GrTexTable_t type,
|
||||||
|
void *data );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grTexDownloadTablePartial( GrTexTable_t type,
|
||||||
|
void *data,
|
||||||
|
int start,
|
||||||
|
int end );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grTexMipMapMode( GrChipID_t tmu,
|
||||||
|
GrMipMapMode_t mode,
|
||||||
|
FxBool lodBlend );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grTexMultibase( GrChipID_t tmu,
|
||||||
|
FxBool enable );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grTexMultibaseAddress( GrChipID_t tmu,
|
||||||
|
GrTexBaseRange_t range,
|
||||||
|
FxU32 startAddress,
|
||||||
|
FxU32 evenOdd,
|
||||||
|
GrTexInfo *info );
|
||||||
|
|
||||||
|
/*
|
||||||
|
** linear frame buffer functions
|
||||||
|
*/
|
||||||
|
|
||||||
|
FX_ENTRY FxBool FX_CALL
|
||||||
|
grLfbLock( GrLock_t type, GrBuffer_t buffer, GrLfbWriteMode_t writeMode,
|
||||||
|
GrOriginLocation_t origin, FxBool pixelPipeline,
|
||||||
|
GrLfbInfo_t *info );
|
||||||
|
|
||||||
|
FX_ENTRY FxBool FX_CALL
|
||||||
|
grLfbUnlock( GrLock_t type, GrBuffer_t buffer );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grLfbConstantAlpha( GrAlpha_t alpha );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grLfbConstantDepth( FxU32 depth );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grLfbWriteColorSwizzle(FxBool swizzleBytes, FxBool swapWords);
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grLfbWriteColorFormat(GrColorFormat_t colorFormat);
|
||||||
|
|
||||||
|
FX_ENTRY FxBool FX_CALL
|
||||||
|
grLfbWriteRegion( GrBuffer_t dst_buffer,
|
||||||
|
FxU32 dst_x, FxU32 dst_y,
|
||||||
|
GrLfbSrcFmt_t src_format,
|
||||||
|
FxU32 src_width, FxU32 src_height,
|
||||||
|
FxBool pixelPipeline,
|
||||||
|
FxI32 src_stride, void *src_data );
|
||||||
|
|
||||||
|
FX_ENTRY FxBool FX_CALL
|
||||||
|
grLfbReadRegion( GrBuffer_t src_buffer,
|
||||||
|
FxU32 src_x, FxU32 src_y,
|
||||||
|
FxU32 src_width, FxU32 src_height,
|
||||||
|
FxU32 dst_stride, void *dst_data );
|
||||||
|
|
||||||
|
/*
|
||||||
|
** glide management functions
|
||||||
|
*/
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grGlideInit( void );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grGlideShutdown( void );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grGlideGetState( void *state );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grGlideSetState( const void *state );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grGlideGetVertexLayout( void *layout );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grGlideSetVertexLayout( const void *layout );
|
||||||
|
|
||||||
|
#endif /* FX_GLIDE_NO_FUNC_PROTO */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <glideutl.h>
|
||||||
|
|
||||||
|
#endif /* __GLIDE_H__ */
|
|
@ -0,0 +1,160 @@
|
||||||
|
/*
|
||||||
|
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||||
|
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||||
|
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||||
|
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||||
|
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||||
|
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||||
|
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||||
|
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||||
|
**
|
||||||
|
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||||
|
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (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, DOD OR NASA FAR
|
||||||
|
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||||
|
** THE UNITED STATES.
|
||||||
|
**
|
||||||
|
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||||
|
**
|
||||||
|
** $Header: /cvsroot/glide/glide3x/h5/glide3/src/glidesys.h,v 1.3.4.3 2003/07/24 03:51:08 anholt Exp $
|
||||||
|
** $Log:
|
||||||
|
** 3 3dfx 1.0.1.0.1.0 10/11/00 Brent Forced check in to enforce
|
||||||
|
** branching.
|
||||||
|
** 2 3dfx 1.0.1.0 06/20/00 Joseph Kain Changes to support the
|
||||||
|
** Napalm Glide open source release. Changes include cleaned up offensive
|
||||||
|
** comments and new legal headers.
|
||||||
|
** 1 3dfx 1.0 09/11/99 StarTeam VTS Administrator
|
||||||
|
** $
|
||||||
|
**
|
||||||
|
** 4 11/05/98 11:18a Russp
|
||||||
|
** Fix GLIDE_NUM_TMU error check (change "&&" to "||")
|
||||||
|
**
|
||||||
|
** 3 7/24/98 1:41p Hohn
|
||||||
|
**
|
||||||
|
** 2 6/15/98 10:50a Peter
|
||||||
|
** made csim compile time option
|
||||||
|
*
|
||||||
|
* 1 1/16/98 4:29p Atai
|
||||||
|
* create glide 3 src
|
||||||
|
*
|
||||||
|
* 10 12/09/97 12:20p Peter
|
||||||
|
* mac glide port
|
||||||
|
*
|
||||||
|
* 9 11/04/97 4:00p Dow
|
||||||
|
* Banshee Mods
|
||||||
|
*
|
||||||
|
* 8 8/18/97 3:52p Peter
|
||||||
|
* pre-hw arrival fixes/cleanup
|
||||||
|
*
|
||||||
|
* 7 6/02/97 4:09p Peter
|
||||||
|
* Compile w/ gcc for Dural
|
||||||
|
*
|
||||||
|
* 6 5/27/97 1:16p Peter
|
||||||
|
* Basic cvg, w/o cmd fifo stuff.
|
||||||
|
*
|
||||||
|
* 5 5/21/97 6:05a Peter
|
||||||
|
*/
|
||||||
|
#ifndef __GLIDESYS_H__
|
||||||
|
#define __GLIDESYS_H__
|
||||||
|
|
||||||
|
/*
|
||||||
|
n** -----------------------------------------------------------------------
|
||||||
|
** COMPILER/ENVIRONMENT CONFIGURATION
|
||||||
|
** -----------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Endianness is stored in bits [30:31] */
|
||||||
|
#define GLIDE_ENDIAN_SHIFT 30
|
||||||
|
#define GLIDE_ENDIAN_LITTLE (0x1 << GLIDE_ENDIAN_SHIFT)
|
||||||
|
#define GLIDE_ENDIAN_BIG (0x2 << GLIDE_ENDIAN_SHIFT)
|
||||||
|
|
||||||
|
/* OS is stored in bits [0:6] */
|
||||||
|
#define GLIDE_OS_SHIFT 0
|
||||||
|
#define GLIDE_OS_UNIX 0x1
|
||||||
|
#define GLIDE_OS_DOS32 0x2
|
||||||
|
#define GLIDE_OS_WIN32 0x4
|
||||||
|
#define GLIDE_OS_MACOS 0x8
|
||||||
|
#define GLIDE_OS_OS2 0x10
|
||||||
|
#define GLIDE_OS_OTHER 0x40 /* For Proprietary Arcade HW */
|
||||||
|
|
||||||
|
/* Sim vs. Hardware is stored in bits [7:8] */
|
||||||
|
#define GLIDE_SST_SHIFT 7
|
||||||
|
#define GLIDE_SST_SIM (0x1 << GLIDE_SST_SHIFT)
|
||||||
|
#define GLIDE_SST_HW (0x2 << GLIDE_SST_SHIFT)
|
||||||
|
|
||||||
|
/* Hardware Type is stored in bits [9:13] */
|
||||||
|
#define GLIDE_HW_SHIFT 9
|
||||||
|
#define GLIDE_HW_SST1 (0x1 << GLIDE_HW_SHIFT)
|
||||||
|
#define GLIDE_HW_SST96 (0x2 << GLIDE_HW_SHIFT)
|
||||||
|
#define GLIDE_HW_H3 (0x4 << GLIDE_HW_SHIFT)
|
||||||
|
#define GLIDE_HW_SST2 (0x8 << GLIDE_HW_SHIFT)
|
||||||
|
#define GLIDE_HW_CVG (0x10 << GLIDE_HW_SHIFT)
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Make sure we handle all instances of WIN32
|
||||||
|
*/
|
||||||
|
#ifndef __WIN32__
|
||||||
|
# if defined (_WIN32) || defined (WIN32) || defined(__NT__)
|
||||||
|
# define __WIN32__
|
||||||
|
# endif
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* We need two checks on the OS: one for endian, the other for OS */
|
||||||
|
/* Check for endianness */
|
||||||
|
#if defined(__IRIX__) || defined(__sparc__) || defined(MACOS)
|
||||||
|
# define GLIDE_ENDIAN GLIDE_ENDIAN_BIG
|
||||||
|
#else
|
||||||
|
# define GLIDE_ENDIAN GLIDE_ENDIAN_LITTLE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Check for OS */
|
||||||
|
#if defined(__IRIX__) || defined(__sparc__) || defined(__linux__) || \
|
||||||
|
defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__)
|
||||||
|
# define GLIDE_OS GLIDE_OS_UNIX
|
||||||
|
#elif defined(__DOS__)
|
||||||
|
# define GLIDE_OS GLIDE_OS_DOS32
|
||||||
|
#elif defined(__WIN32__)
|
||||||
|
# define GLIDE_OS GLIDE_OS_WIN32
|
||||||
|
#elif defined(macintosh)
|
||||||
|
# define GLIDE_OS GLIDE_OS_MACOS
|
||||||
|
#else
|
||||||
|
#error "Unknown OS"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Check for Simulator vs. Hardware */
|
||||||
|
#if HAL_CSIM || HWC_CSIM
|
||||||
|
# define GLIDE_SST GLIDE_SST_SIM
|
||||||
|
#else
|
||||||
|
# define GLIDE_SST GLIDE_SST_HW
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Check for type of hardware */
|
||||||
|
#ifdef SST96
|
||||||
|
# define GLIDE_HW GLIDE_HW_SST96
|
||||||
|
#elif defined(H3)
|
||||||
|
# define GLIDE_HW GLIDE_HW_H3
|
||||||
|
#elif defined(SST2)
|
||||||
|
# define GLIDE_HW GLIDE_HW_SST2
|
||||||
|
#elif defined(CVG)
|
||||||
|
# define GLIDE_HW GLIDE_HW_CVG
|
||||||
|
#else /* Default to SST1 */
|
||||||
|
# define GLIDE_HW GLIDE_HW_SST1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#define GLIDE_PLATFORM (GLIDE_ENDIAN | GLIDE_OS | GLIDE_SST | GLIDE_HW)
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Control the number of TMUs
|
||||||
|
*/
|
||||||
|
#ifndef GLIDE_NUM_TMU
|
||||||
|
# define GLIDE_NUM_TMU 2
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#if ((GLIDE_NUM_TMU < 0) || (GLIDE_NUM_TMU > 3))
|
||||||
|
# error "GLIDE_NUM_TMU set to an invalid value"
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* __GLIDESYS_H__ */
|
|
@ -0,0 +1,153 @@
|
||||||
|
/*
|
||||||
|
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||||
|
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||||
|
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||||
|
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||||
|
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||||
|
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||||
|
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||||
|
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||||
|
**
|
||||||
|
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||||
|
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (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, DOD OR NASA FAR
|
||||||
|
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||||
|
** THE UNITED STATES.
|
||||||
|
**
|
||||||
|
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||||
|
**
|
||||||
|
** $Header: /cvsroot/glide/glide3x/h5/glide3/src/glideutl.h,v 1.3.4.2 2003/06/05 08:23:53 koolsmoky Exp $
|
||||||
|
** $Log:
|
||||||
|
** 3 3dfx 1.0.1.0.1.0 10/11/00 Brent Forced check in to enforce
|
||||||
|
** branching.
|
||||||
|
** 2 3dfx 1.0.1.0 06/20/00 Joseph Kain Changes to support the
|
||||||
|
** Napalm Glide open source release. Changes include cleaned up offensive
|
||||||
|
** comments and new legal headers.
|
||||||
|
** 1 3dfx 1.0 09/11/99 StarTeam VTS Administrator
|
||||||
|
** $
|
||||||
|
**
|
||||||
|
** 4 7/24/98 1:41p Hohn
|
||||||
|
**
|
||||||
|
** 3 1/30/98 4:27p Atai
|
||||||
|
** gufog* prototype
|
||||||
|
**
|
||||||
|
** 1 1/29/98 4:00p Atai
|
||||||
|
*
|
||||||
|
* 1 1/16/98 4:29p Atai
|
||||||
|
* create glide 3 src
|
||||||
|
*
|
||||||
|
* 11 1/07/98 11:18a Atai
|
||||||
|
* remove GrMipMapInfo and GrGC.mm_table in glide3
|
||||||
|
*
|
||||||
|
* 10 1/06/98 6:47p Atai
|
||||||
|
* undo grSplash and remove gu routines
|
||||||
|
*
|
||||||
|
* 9 1/05/98 6:04p Atai
|
||||||
|
* move 3df gu related data structure from glide.h to glideutl.h
|
||||||
|
*
|
||||||
|
* 8 12/18/97 2:13p Peter
|
||||||
|
* fogTable cataclysm
|
||||||
|
*
|
||||||
|
* 7 12/15/97 5:52p Atai
|
||||||
|
* disable obsolete glide2 api for glide3
|
||||||
|
*
|
||||||
|
* 6 8/14/97 5:32p Pgj
|
||||||
|
* remove dead code per GMT
|
||||||
|
*
|
||||||
|
* 5 6/12/97 5:19p Pgj
|
||||||
|
* Fix bug 578
|
||||||
|
*
|
||||||
|
* 4 3/05/97 9:36p Jdt
|
||||||
|
* Removed guFbWriteRegion added guEncodeRLE16
|
||||||
|
*
|
||||||
|
* 3 1/16/97 3:45p Dow
|
||||||
|
* Embedded fn protos in ifndef FX_GLIDE_NO_FUNC_PROTO
|
||||||
|
*/
|
||||||
|
|
||||||
|
/* Glide Utility routines */
|
||||||
|
|
||||||
|
#ifndef __GLIDEUTL_H__
|
||||||
|
#define __GLIDEUTL_H__
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
** 3DF texture file structs
|
||||||
|
*/
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
FxU32 width, height;
|
||||||
|
int small_lod, large_lod;
|
||||||
|
GrAspectRatio_t aspect_ratio;
|
||||||
|
GrTextureFormat_t format;
|
||||||
|
} Gu3dfHeader;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
FxU8 yRGB[16];
|
||||||
|
FxI16 iRGB[4][3];
|
||||||
|
FxI16 qRGB[4][3];
|
||||||
|
FxU32 packed_data[12];
|
||||||
|
} GuNccTable;
|
||||||
|
|
||||||
|
typedef struct {
|
||||||
|
FxU32 data[256];
|
||||||
|
} GuTexPalette;
|
||||||
|
|
||||||
|
typedef union {
|
||||||
|
GuNccTable nccTable;
|
||||||
|
GuTexPalette palette;
|
||||||
|
} GuTexTable;
|
||||||
|
|
||||||
|
typedef struct
|
||||||
|
{
|
||||||
|
Gu3dfHeader header;
|
||||||
|
GuTexTable table;
|
||||||
|
void *data;
|
||||||
|
FxU32 mem_required; /* memory required for mip map in bytes. */
|
||||||
|
} Gu3dfInfo;
|
||||||
|
|
||||||
|
#ifndef FX_GLIDE_NO_FUNC_PROTO
|
||||||
|
/*
|
||||||
|
** Gamma functions
|
||||||
|
*/
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
guGammaCorrectionRGB( FxFloat red, FxFloat green, FxFloat blue );
|
||||||
|
|
||||||
|
/*
|
||||||
|
** fog stuff
|
||||||
|
*/
|
||||||
|
FX_ENTRY float FX_CALL
|
||||||
|
guFogTableIndexToW( int i );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
guFogGenerateExp( GrFog_t *fogtable, float density );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
guFogGenerateExp2( GrFog_t *fogtable, float density );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
guFogGenerateLinear(GrFog_t *fogtable,
|
||||||
|
float nearZ, float farZ );
|
||||||
|
|
||||||
|
/*
|
||||||
|
** hi-level texture manipulation tools.
|
||||||
|
*/
|
||||||
|
FX_ENTRY FxBool FX_CALL
|
||||||
|
gu3dfGetInfo( const char *filename, Gu3dfInfo *info );
|
||||||
|
|
||||||
|
FX_ENTRY FxBool FX_CALL
|
||||||
|
gu3dfLoad( const char *filename, Gu3dfInfo *data );
|
||||||
|
|
||||||
|
#endif /* FX_GLIDE_NO_FUNC_PROTO */
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* __GLIDEUTL_H__ */
|
|
@ -0,0 +1,148 @@
|
||||||
|
/*
|
||||||
|
** THIS SOFTWARE IS SUBJECT TO COPYRIGHT PROTECTION AND IS OFFERED ONLY
|
||||||
|
** PURSUANT TO THE 3DFX GLIDE GENERAL PUBLIC LICENSE. THERE IS NO RIGHT
|
||||||
|
** TO USE THE GLIDE TRADEMARK WITHOUT PRIOR WRITTEN PERMISSION OF 3DFX
|
||||||
|
** INTERACTIVE, INC. A COPY OF THIS LICENSE MAY BE OBTAINED FROM THE
|
||||||
|
** DISTRIBUTOR OR BY CONTACTING 3DFX INTERACTIVE INC(info@3dfx.com).
|
||||||
|
** THIS PROGRAM IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER
|
||||||
|
** EXPRESSED OR IMPLIED. SEE THE 3DFX GLIDE GENERAL PUBLIC LICENSE FOR A
|
||||||
|
** FULL TEXT OF THE NON-WARRANTY PROVISIONS.
|
||||||
|
**
|
||||||
|
** USE, DUPLICATION OR DISCLOSURE BY THE GOVERNMENT IS SUBJECT TO
|
||||||
|
** RESTRICTIONS AS SET FORTH IN SUBDIVISION (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, DOD OR NASA FAR
|
||||||
|
** SUPPLEMENT. UNPUBLISHED RIGHTS RESERVED UNDER THE COPYRIGHT LAWS OF
|
||||||
|
** THE UNITED STATES.
|
||||||
|
**
|
||||||
|
** COPYRIGHT 3DFX INTERACTIVE, INC. 1999, ALL RIGHTS RESERVED
|
||||||
|
**
|
||||||
|
** $Header: /cvsroot/glide/glide3x/h5/incsrc/sst1vid.h,v 1.3.4.1 2003/04/06 18:23:10 koolsmoky Exp $
|
||||||
|
** $Log:
|
||||||
|
** 7 3dfx 1.4.1.0.1.0 10/11/00 Brent Forced check in to enforce
|
||||||
|
** branching.
|
||||||
|
** 6 3dfx 1.4.1.0 06/20/00 Joseph Kain Changes to support the
|
||||||
|
** Napalm Glide open source release. Changes include cleaned up offensive
|
||||||
|
** comments and new legal headers.
|
||||||
|
** 5 3dfx 1.4 12/10/99 Leo Galway Removed previous hi-res
|
||||||
|
** mode information for Glide3. These modes were only necessary for
|
||||||
|
** Cornerstone (or future hi-res) support in RT4.2 source branch and
|
||||||
|
** proceeded to break the V3 and V2 builds (from 3dfx view), hence they have
|
||||||
|
** been removed.
|
||||||
|
** 4 3dfx 1.3 12/08/99 Leo Galway Added mode information for
|
||||||
|
** 1600x1280, 1792x1440, 1920x1080, 1920x1200, 2046x1536 (as a result of
|
||||||
|
** glide being tested with Cornerstone modes). Although not all of these
|
||||||
|
** modes are currently capable under Glide, their inclusion prevents Glide
|
||||||
|
** apps from displaying in incorrect modes when these hi-res modes are
|
||||||
|
** selected. Search for SUSTAINED_ENGINEERING_CHANGE_BEGIN.
|
||||||
|
** 3 3dfx 1.2 09/17/99 Jeremy Zelsnack
|
||||||
|
** 2 3dfx 1.1 09/17/99 Jeremy Zelsnack
|
||||||
|
** 1 3dfx 1.0 09/11/99 StarTeam VTS Administrator
|
||||||
|
** $
|
||||||
|
**
|
||||||
|
** 8 3/04/99 1:19p Atai
|
||||||
|
** sync new res modes
|
||||||
|
**
|
||||||
|
** 10 2/27/99 12:28p Dow
|
||||||
|
** new resolutions
|
||||||
|
**
|
||||||
|
** 6 2/13/99 1:56p Dow
|
||||||
|
** Added new resolution constants
|
||||||
|
**
|
||||||
|
** 5 7/24/98 1:38p Hohn
|
||||||
|
*
|
||||||
|
* 4 9/09/97 7:35p Sellers
|
||||||
|
* Added 400x300 resolution
|
||||||
|
*
|
||||||
|
* 3 8/24/97 9:31a Sellers
|
||||||
|
* moved new video timing to sst1vid.h
|
||||||
|
* redefined 1600x1280 to be 1600x1200
|
||||||
|
*
|
||||||
|
* 2 6/05/97 11:14p Pgj
|
||||||
|
*
|
||||||
|
* 5 7/24/96 3:43p Sellers
|
||||||
|
* added 512x384 @ 60 Hz for arcade monitors
|
||||||
|
* added 512x256 @ 60 Hz for arcade monitors
|
||||||
|
*
|
||||||
|
* 4 7/18/96 10:58a Sellers
|
||||||
|
* fixed FT and TF clock delay values for lower frequencies with
|
||||||
|
* .5/.5 combos
|
||||||
|
*
|
||||||
|
* 3 6/18/96 6:54p Sellers
|
||||||
|
* added sst1InitShutdownSli() to fix Glide Splash screen problems with
|
||||||
|
* SLI
|
||||||
|
*
|
||||||
|
* 2 6/13/96 7:45p Sellers
|
||||||
|
* added "voodoo.ini" support
|
||||||
|
* added DirectX support
|
||||||
|
* misc cleanup
|
||||||
|
*
|
||||||
|
* 2 6/11/96 1:43p Sellers
|
||||||
|
* added support for 60, 75, 85, and 120 Hz refresh rates for "most"
|
||||||
|
* resolutions
|
||||||
|
*
|
||||||
|
* 1 5/08/96 5:43p Paik
|
||||||
|
* Video definitions
|
||||||
|
*/
|
||||||
|
#ifndef __SST1VID_H__
|
||||||
|
#define __SST1VID_H__
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* Video defines */
|
||||||
|
|
||||||
|
typedef FxI32 GrScreenRefresh_t;
|
||||||
|
#define GR_REFRESH_60Hz 0x0
|
||||||
|
#define GR_REFRESH_70Hz 0x1
|
||||||
|
#define GR_REFRESH_72Hz 0x2
|
||||||
|
#define GR_REFRESH_75Hz 0x3
|
||||||
|
#define GR_REFRESH_80Hz 0x4
|
||||||
|
#define GR_REFRESH_90Hz 0x5
|
||||||
|
#define GR_REFRESH_100Hz 0x6
|
||||||
|
#define GR_REFRESH_85Hz 0x7
|
||||||
|
#define GR_REFRESH_120Hz 0x8
|
||||||
|
#define GR_REFRESH_NONE 0xff
|
||||||
|
|
||||||
|
typedef FxI32 GrScreenResolution_t;
|
||||||
|
#define GR_RESOLUTION_320x200 0x0
|
||||||
|
#define GR_RESOLUTION_320x240 0x1
|
||||||
|
#define GR_RESOLUTION_400x256 0x2
|
||||||
|
#define GR_RESOLUTION_512x384 0x3
|
||||||
|
#define GR_RESOLUTION_640x200 0x4
|
||||||
|
#define GR_RESOLUTION_640x350 0x5
|
||||||
|
#define GR_RESOLUTION_640x400 0x6
|
||||||
|
#define GR_RESOLUTION_640x480 0x7
|
||||||
|
#define GR_RESOLUTION_800x600 0x8
|
||||||
|
#define GR_RESOLUTION_960x720 0x9
|
||||||
|
#define GR_RESOLUTION_856x480 0xa
|
||||||
|
#define GR_RESOLUTION_512x256 0xb
|
||||||
|
#define GR_RESOLUTION_1024x768 0xC
|
||||||
|
#define GR_RESOLUTION_1280x1024 0xD
|
||||||
|
#define GR_RESOLUTION_1600x1200 0xE
|
||||||
|
#define GR_RESOLUTION_400x300 0xF
|
||||||
|
#define GR_RESOLUTION_1152x864 0x10
|
||||||
|
#define GR_RESOLUTION_1280x960 0x11
|
||||||
|
#define GR_RESOLUTION_1600x1024 0x12
|
||||||
|
#define GR_RESOLUTION_1792x1344 0x13
|
||||||
|
#define GR_RESOLUTION_1856x1392 0x14
|
||||||
|
#define GR_RESOLUTION_1920x1440 0x15
|
||||||
|
#define GR_RESOLUTION_2048x1536 0x16
|
||||||
|
#define GR_RESOLUTION_2048x2048 0x17
|
||||||
|
#define GR_RESOLUTION_NONE 0xff
|
||||||
|
|
||||||
|
#ifdef GR_RESOLUTION_MAX
|
||||||
|
#undef GR_RESOLUTION_MAX
|
||||||
|
#endif
|
||||||
|
#ifdef GR_RESOLUTION_MIN
|
||||||
|
#undef GR_RESOLUTION_MIN
|
||||||
|
#endif
|
||||||
|
#define GR_RESOLUTION_MIN GR_RESOLUTION_320x200
|
||||||
|
#define GR_RESOLUTION_MAX GR_RESOLUTION_2048x2048
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif /* __SST1VID_H__ */
|
|
@ -0,0 +1,648 @@
|
||||||
|
#ifndef __wglext_h_
|
||||||
|
#define __wglext_h_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*
|
||||||
|
** Copyright (c) 2007 The Khronos Group Inc.
|
||||||
|
**
|
||||||
|
** Permission is hereby granted, free of charge, to any person obtaining a
|
||||||
|
** copy of this software and/or associated documentation files (the
|
||||||
|
** "Materials"), to deal in the Materials without restriction, including
|
||||||
|
** without limitation the rights to use, copy, modify, merge, publish,
|
||||||
|
** distribute, sublicense, and/or sell copies of the Materials, and to
|
||||||
|
** permit persons to whom the Materials are furnished to do so, subject to
|
||||||
|
** the following conditions:
|
||||||
|
**
|
||||||
|
** The above copyright notice and this permission notice shall be included
|
||||||
|
** in all copies or substantial portions of the Materials.
|
||||||
|
**
|
||||||
|
** THE MATERIALS ARE PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||||
|
** EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
||||||
|
** MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
||||||
|
** IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
||||||
|
** CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
||||||
|
** TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
||||||
|
** MATERIALS OR THE USE OR OTHER DEALINGS IN THE MATERIALS.
|
||||||
|
*/
|
||||||
|
|
||||||
|
#if defined(_WIN32) && !defined(APIENTRY) && !defined(__CYGWIN__) && !defined(__SCITECH_SNAP__)
|
||||||
|
#define WIN32_LEAN_AND_MEAN 1
|
||||||
|
#include <windows.h>
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef APIENTRY
|
||||||
|
#define APIENTRY
|
||||||
|
#endif
|
||||||
|
#ifndef APIENTRYP
|
||||||
|
#define APIENTRYP APIENTRY *
|
||||||
|
#endif
|
||||||
|
#ifndef GLAPI
|
||||||
|
#define GLAPI extern
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/*************************************************************/
|
||||||
|
|
||||||
|
/* Header file version number */
|
||||||
|
/* wglext.h last updated 2007/02/09 */
|
||||||
|
/* Current version at http://www.opengl.org/registry/ */
|
||||||
|
#define WGL_WGLEXT_VERSION 9
|
||||||
|
|
||||||
|
#ifndef WGL_ARB_buffer_region
|
||||||
|
#define WGL_FRONT_COLOR_BUFFER_BIT_ARB 0x00000001
|
||||||
|
#define WGL_BACK_COLOR_BUFFER_BIT_ARB 0x00000002
|
||||||
|
#define WGL_DEPTH_BUFFER_BIT_ARB 0x00000004
|
||||||
|
#define WGL_STENCIL_BUFFER_BIT_ARB 0x00000008
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_ARB_multisample
|
||||||
|
#define WGL_SAMPLE_BUFFERS_ARB 0x2041
|
||||||
|
#define WGL_SAMPLES_ARB 0x2042
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_ARB_extensions_string
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_ARB_pixel_format
|
||||||
|
#define WGL_NUMBER_PIXEL_FORMATS_ARB 0x2000
|
||||||
|
#define WGL_DRAW_TO_WINDOW_ARB 0x2001
|
||||||
|
#define WGL_DRAW_TO_BITMAP_ARB 0x2002
|
||||||
|
#define WGL_ACCELERATION_ARB 0x2003
|
||||||
|
#define WGL_NEED_PALETTE_ARB 0x2004
|
||||||
|
#define WGL_NEED_SYSTEM_PALETTE_ARB 0x2005
|
||||||
|
#define WGL_SWAP_LAYER_BUFFERS_ARB 0x2006
|
||||||
|
#define WGL_SWAP_METHOD_ARB 0x2007
|
||||||
|
#define WGL_NUMBER_OVERLAYS_ARB 0x2008
|
||||||
|
#define WGL_NUMBER_UNDERLAYS_ARB 0x2009
|
||||||
|
#define WGL_TRANSPARENT_ARB 0x200A
|
||||||
|
#define WGL_TRANSPARENT_RED_VALUE_ARB 0x2037
|
||||||
|
#define WGL_TRANSPARENT_GREEN_VALUE_ARB 0x2038
|
||||||
|
#define WGL_TRANSPARENT_BLUE_VALUE_ARB 0x2039
|
||||||
|
#define WGL_TRANSPARENT_ALPHA_VALUE_ARB 0x203A
|
||||||
|
#define WGL_TRANSPARENT_INDEX_VALUE_ARB 0x203B
|
||||||
|
#define WGL_SHARE_DEPTH_ARB 0x200C
|
||||||
|
#define WGL_SHARE_STENCIL_ARB 0x200D
|
||||||
|
#define WGL_SHARE_ACCUM_ARB 0x200E
|
||||||
|
#define WGL_SUPPORT_GDI_ARB 0x200F
|
||||||
|
#define WGL_SUPPORT_OPENGL_ARB 0x2010
|
||||||
|
#define WGL_DOUBLE_BUFFER_ARB 0x2011
|
||||||
|
#define WGL_STEREO_ARB 0x2012
|
||||||
|
#define WGL_PIXEL_TYPE_ARB 0x2013
|
||||||
|
#define WGL_COLOR_BITS_ARB 0x2014
|
||||||
|
#define WGL_RED_BITS_ARB 0x2015
|
||||||
|
#define WGL_RED_SHIFT_ARB 0x2016
|
||||||
|
#define WGL_GREEN_BITS_ARB 0x2017
|
||||||
|
#define WGL_GREEN_SHIFT_ARB 0x2018
|
||||||
|
#define WGL_BLUE_BITS_ARB 0x2019
|
||||||
|
#define WGL_BLUE_SHIFT_ARB 0x201A
|
||||||
|
#define WGL_ALPHA_BITS_ARB 0x201B
|
||||||
|
#define WGL_ALPHA_SHIFT_ARB 0x201C
|
||||||
|
#define WGL_ACCUM_BITS_ARB 0x201D
|
||||||
|
#define WGL_ACCUM_RED_BITS_ARB 0x201E
|
||||||
|
#define WGL_ACCUM_GREEN_BITS_ARB 0x201F
|
||||||
|
#define WGL_ACCUM_BLUE_BITS_ARB 0x2020
|
||||||
|
#define WGL_ACCUM_ALPHA_BITS_ARB 0x2021
|
||||||
|
#define WGL_DEPTH_BITS_ARB 0x2022
|
||||||
|
#define WGL_STENCIL_BITS_ARB 0x2023
|
||||||
|
#define WGL_AUX_BUFFERS_ARB 0x2024
|
||||||
|
#define WGL_NO_ACCELERATION_ARB 0x2025
|
||||||
|
#define WGL_GENERIC_ACCELERATION_ARB 0x2026
|
||||||
|
#define WGL_FULL_ACCELERATION_ARB 0x2027
|
||||||
|
#define WGL_SWAP_EXCHANGE_ARB 0x2028
|
||||||
|
#define WGL_SWAP_COPY_ARB 0x2029
|
||||||
|
#define WGL_SWAP_UNDEFINED_ARB 0x202A
|
||||||
|
#define WGL_TYPE_RGBA_ARB 0x202B
|
||||||
|
#define WGL_TYPE_COLORINDEX_ARB 0x202C
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_ARB_make_current_read
|
||||||
|
#define ERROR_INVALID_PIXEL_TYPE_ARB 0x2043
|
||||||
|
#define ERROR_INCOMPATIBLE_DEVICE_CONTEXTS_ARB 0x2054
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_ARB_pbuffer
|
||||||
|
#define WGL_DRAW_TO_PBUFFER_ARB 0x202D
|
||||||
|
#define WGL_MAX_PBUFFER_PIXELS_ARB 0x202E
|
||||||
|
#define WGL_MAX_PBUFFER_WIDTH_ARB 0x202F
|
||||||
|
#define WGL_MAX_PBUFFER_HEIGHT_ARB 0x2030
|
||||||
|
#define WGL_PBUFFER_LARGEST_ARB 0x2033
|
||||||
|
#define WGL_PBUFFER_WIDTH_ARB 0x2034
|
||||||
|
#define WGL_PBUFFER_HEIGHT_ARB 0x2035
|
||||||
|
#define WGL_PBUFFER_LOST_ARB 0x2036
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_ARB_render_texture
|
||||||
|
#define WGL_BIND_TO_TEXTURE_RGB_ARB 0x2070
|
||||||
|
#define WGL_BIND_TO_TEXTURE_RGBA_ARB 0x2071
|
||||||
|
#define WGL_TEXTURE_FORMAT_ARB 0x2072
|
||||||
|
#define WGL_TEXTURE_TARGET_ARB 0x2073
|
||||||
|
#define WGL_MIPMAP_TEXTURE_ARB 0x2074
|
||||||
|
#define WGL_TEXTURE_RGB_ARB 0x2075
|
||||||
|
#define WGL_TEXTURE_RGBA_ARB 0x2076
|
||||||
|
#define WGL_NO_TEXTURE_ARB 0x2077
|
||||||
|
#define WGL_TEXTURE_CUBE_MAP_ARB 0x2078
|
||||||
|
#define WGL_TEXTURE_1D_ARB 0x2079
|
||||||
|
#define WGL_TEXTURE_2D_ARB 0x207A
|
||||||
|
#define WGL_MIPMAP_LEVEL_ARB 0x207B
|
||||||
|
#define WGL_CUBE_MAP_FACE_ARB 0x207C
|
||||||
|
#define WGL_TEXTURE_CUBE_MAP_POSITIVE_X_ARB 0x207D
|
||||||
|
#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_X_ARB 0x207E
|
||||||
|
#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Y_ARB 0x207F
|
||||||
|
#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Y_ARB 0x2080
|
||||||
|
#define WGL_TEXTURE_CUBE_MAP_POSITIVE_Z_ARB 0x2081
|
||||||
|
#define WGL_TEXTURE_CUBE_MAP_NEGATIVE_Z_ARB 0x2082
|
||||||
|
#define WGL_FRONT_LEFT_ARB 0x2083
|
||||||
|
#define WGL_FRONT_RIGHT_ARB 0x2084
|
||||||
|
#define WGL_BACK_LEFT_ARB 0x2085
|
||||||
|
#define WGL_BACK_RIGHT_ARB 0x2086
|
||||||
|
#define WGL_AUX0_ARB 0x2087
|
||||||
|
#define WGL_AUX1_ARB 0x2088
|
||||||
|
#define WGL_AUX2_ARB 0x2089
|
||||||
|
#define WGL_AUX3_ARB 0x208A
|
||||||
|
#define WGL_AUX4_ARB 0x208B
|
||||||
|
#define WGL_AUX5_ARB 0x208C
|
||||||
|
#define WGL_AUX6_ARB 0x208D
|
||||||
|
#define WGL_AUX7_ARB 0x208E
|
||||||
|
#define WGL_AUX8_ARB 0x208F
|
||||||
|
#define WGL_AUX9_ARB 0x2090
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_ARB_pixel_format_float
|
||||||
|
#define WGL_TYPE_RGBA_FLOAT_ARB 0x21A0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_EXT_make_current_read
|
||||||
|
#define ERROR_INVALID_PIXEL_TYPE_EXT 0x2043
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_EXT_pixel_format
|
||||||
|
#define WGL_NUMBER_PIXEL_FORMATS_EXT 0x2000
|
||||||
|
#define WGL_DRAW_TO_WINDOW_EXT 0x2001
|
||||||
|
#define WGL_DRAW_TO_BITMAP_EXT 0x2002
|
||||||
|
#define WGL_ACCELERATION_EXT 0x2003
|
||||||
|
#define WGL_NEED_PALETTE_EXT 0x2004
|
||||||
|
#define WGL_NEED_SYSTEM_PALETTE_EXT 0x2005
|
||||||
|
#define WGL_SWAP_LAYER_BUFFERS_EXT 0x2006
|
||||||
|
#define WGL_SWAP_METHOD_EXT 0x2007
|
||||||
|
#define WGL_NUMBER_OVERLAYS_EXT 0x2008
|
||||||
|
#define WGL_NUMBER_UNDERLAYS_EXT 0x2009
|
||||||
|
#define WGL_TRANSPARENT_EXT 0x200A
|
||||||
|
#define WGL_TRANSPARENT_VALUE_EXT 0x200B
|
||||||
|
#define WGL_SHARE_DEPTH_EXT 0x200C
|
||||||
|
#define WGL_SHARE_STENCIL_EXT 0x200D
|
||||||
|
#define WGL_SHARE_ACCUM_EXT 0x200E
|
||||||
|
#define WGL_SUPPORT_GDI_EXT 0x200F
|
||||||
|
#define WGL_SUPPORT_OPENGL_EXT 0x2010
|
||||||
|
#define WGL_DOUBLE_BUFFER_EXT 0x2011
|
||||||
|
#define WGL_STEREO_EXT 0x2012
|
||||||
|
#define WGL_PIXEL_TYPE_EXT 0x2013
|
||||||
|
#define WGL_COLOR_BITS_EXT 0x2014
|
||||||
|
#define WGL_RED_BITS_EXT 0x2015
|
||||||
|
#define WGL_RED_SHIFT_EXT 0x2016
|
||||||
|
#define WGL_GREEN_BITS_EXT 0x2017
|
||||||
|
#define WGL_GREEN_SHIFT_EXT 0x2018
|
||||||
|
#define WGL_BLUE_BITS_EXT 0x2019
|
||||||
|
#define WGL_BLUE_SHIFT_EXT 0x201A
|
||||||
|
#define WGL_ALPHA_BITS_EXT 0x201B
|
||||||
|
#define WGL_ALPHA_SHIFT_EXT 0x201C
|
||||||
|
#define WGL_ACCUM_BITS_EXT 0x201D
|
||||||
|
#define WGL_ACCUM_RED_BITS_EXT 0x201E
|
||||||
|
#define WGL_ACCUM_GREEN_BITS_EXT 0x201F
|
||||||
|
#define WGL_ACCUM_BLUE_BITS_EXT 0x2020
|
||||||
|
#define WGL_ACCUM_ALPHA_BITS_EXT 0x2021
|
||||||
|
#define WGL_DEPTH_BITS_EXT 0x2022
|
||||||
|
#define WGL_STENCIL_BITS_EXT 0x2023
|
||||||
|
#define WGL_AUX_BUFFERS_EXT 0x2024
|
||||||
|
#define WGL_NO_ACCELERATION_EXT 0x2025
|
||||||
|
#define WGL_GENERIC_ACCELERATION_EXT 0x2026
|
||||||
|
#define WGL_FULL_ACCELERATION_EXT 0x2027
|
||||||
|
#define WGL_SWAP_EXCHANGE_EXT 0x2028
|
||||||
|
#define WGL_SWAP_COPY_EXT 0x2029
|
||||||
|
#define WGL_SWAP_UNDEFINED_EXT 0x202A
|
||||||
|
#define WGL_TYPE_RGBA_EXT 0x202B
|
||||||
|
#define WGL_TYPE_COLORINDEX_EXT 0x202C
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_EXT_pbuffer
|
||||||
|
#define WGL_DRAW_TO_PBUFFER_EXT 0x202D
|
||||||
|
#define WGL_MAX_PBUFFER_PIXELS_EXT 0x202E
|
||||||
|
#define WGL_MAX_PBUFFER_WIDTH_EXT 0x202F
|
||||||
|
#define WGL_MAX_PBUFFER_HEIGHT_EXT 0x2030
|
||||||
|
#define WGL_OPTIMAL_PBUFFER_WIDTH_EXT 0x2031
|
||||||
|
#define WGL_OPTIMAL_PBUFFER_HEIGHT_EXT 0x2032
|
||||||
|
#define WGL_PBUFFER_LARGEST_EXT 0x2033
|
||||||
|
#define WGL_PBUFFER_WIDTH_EXT 0x2034
|
||||||
|
#define WGL_PBUFFER_HEIGHT_EXT 0x2035
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_EXT_depth_float
|
||||||
|
#define WGL_DEPTH_FLOAT_EXT 0x2040
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_3DFX_multisample
|
||||||
|
#define WGL_SAMPLE_BUFFERS_3DFX 0x2060
|
||||||
|
#define WGL_SAMPLES_3DFX 0x2061
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_EXT_multisample
|
||||||
|
#define WGL_SAMPLE_BUFFERS_EXT 0x2041
|
||||||
|
#define WGL_SAMPLES_EXT 0x2042
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_I3D_digital_video_control
|
||||||
|
#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_FRAMEBUFFER_I3D 0x2050
|
||||||
|
#define WGL_DIGITAL_VIDEO_CURSOR_ALPHA_VALUE_I3D 0x2051
|
||||||
|
#define WGL_DIGITAL_VIDEO_CURSOR_INCLUDED_I3D 0x2052
|
||||||
|
#define WGL_DIGITAL_VIDEO_GAMMA_CORRECTED_I3D 0x2053
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_I3D_gamma
|
||||||
|
#define WGL_GAMMA_TABLE_SIZE_I3D 0x204E
|
||||||
|
#define WGL_GAMMA_EXCLUDE_DESKTOP_I3D 0x204F
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_I3D_genlock
|
||||||
|
#define WGL_GENLOCK_SOURCE_MULTIVIEW_I3D 0x2044
|
||||||
|
#define WGL_GENLOCK_SOURCE_EXTENAL_SYNC_I3D 0x2045
|
||||||
|
#define WGL_GENLOCK_SOURCE_EXTENAL_FIELD_I3D 0x2046
|
||||||
|
#define WGL_GENLOCK_SOURCE_EXTENAL_TTL_I3D 0x2047
|
||||||
|
#define WGL_GENLOCK_SOURCE_DIGITAL_SYNC_I3D 0x2048
|
||||||
|
#define WGL_GENLOCK_SOURCE_DIGITAL_FIELD_I3D 0x2049
|
||||||
|
#define WGL_GENLOCK_SOURCE_EDGE_FALLING_I3D 0x204A
|
||||||
|
#define WGL_GENLOCK_SOURCE_EDGE_RISING_I3D 0x204B
|
||||||
|
#define WGL_GENLOCK_SOURCE_EDGE_BOTH_I3D 0x204C
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_I3D_image_buffer
|
||||||
|
#define WGL_IMAGE_BUFFER_MIN_ACCESS_I3D 0x00000001
|
||||||
|
#define WGL_IMAGE_BUFFER_LOCK_I3D 0x00000002
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_I3D_swap_frame_lock
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_NV_render_depth_texture
|
||||||
|
#define WGL_BIND_TO_TEXTURE_DEPTH_NV 0x20A3
|
||||||
|
#define WGL_BIND_TO_TEXTURE_RECTANGLE_DEPTH_NV 0x20A4
|
||||||
|
#define WGL_DEPTH_TEXTURE_FORMAT_NV 0x20A5
|
||||||
|
#define WGL_TEXTURE_DEPTH_COMPONENT_NV 0x20A6
|
||||||
|
#define WGL_DEPTH_COMPONENT_NV 0x20A7
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_NV_render_texture_rectangle
|
||||||
|
#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGB_NV 0x20A0
|
||||||
|
#define WGL_BIND_TO_TEXTURE_RECTANGLE_RGBA_NV 0x20A1
|
||||||
|
#define WGL_TEXTURE_RECTANGLE_NV 0x20A2
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_ATI_pixel_format_float
|
||||||
|
#define WGL_TYPE_RGBA_FLOAT_ATI 0x21A0
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_NV_float_buffer
|
||||||
|
#define WGL_FLOAT_COMPONENTS_NV 0x20B0
|
||||||
|
#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_R_NV 0x20B1
|
||||||
|
#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RG_NV 0x20B2
|
||||||
|
#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGB_NV 0x20B3
|
||||||
|
#define WGL_BIND_TO_TEXTURE_RECTANGLE_FLOAT_RGBA_NV 0x20B4
|
||||||
|
#define WGL_TEXTURE_FLOAT_R_NV 0x20B5
|
||||||
|
#define WGL_TEXTURE_FLOAT_RG_NV 0x20B6
|
||||||
|
#define WGL_TEXTURE_FLOAT_RGB_NV 0x20B7
|
||||||
|
#define WGL_TEXTURE_FLOAT_RGBA_NV 0x20B8
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_3DL_stereo_control
|
||||||
|
#define WGL_STEREO_EMITTER_ENABLE_3DL 0x2055
|
||||||
|
#define WGL_STEREO_EMITTER_DISABLE_3DL 0x2056
|
||||||
|
#define WGL_STEREO_POLARITY_NORMAL_3DL 0x2057
|
||||||
|
#define WGL_STEREO_POLARITY_INVERT_3DL 0x2058
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_EXT_pixel_format_packed_float
|
||||||
|
#define WGL_TYPE_RGBA_UNSIGNED_FLOAT_EXT 0x20A8
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_EXT_framebuffer_sRGB
|
||||||
|
#define WGL_FRAMEBUFFER_SRGB_CAPABLE_EXT 0x20A9
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
/*************************************************************/
|
||||||
|
|
||||||
|
#ifndef WGL_ARB_pbuffer
|
||||||
|
DECLARE_HANDLE(HPBUFFERARB);
|
||||||
|
#endif
|
||||||
|
#ifndef WGL_EXT_pbuffer
|
||||||
|
DECLARE_HANDLE(HPBUFFEREXT);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_ARB_buffer_region
|
||||||
|
#define WGL_ARB_buffer_region 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern HANDLE WINAPI wglCreateBufferRegionARB (HDC, int, UINT);
|
||||||
|
extern VOID WINAPI wglDeleteBufferRegionARB (HANDLE);
|
||||||
|
extern BOOL WINAPI wglSaveBufferRegionARB (HANDLE, int, int, int, int);
|
||||||
|
extern BOOL WINAPI wglRestoreBufferRegionARB (HANDLE, int, int, int, int, int, int);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef HANDLE (WINAPI * PFNWGLCREATEBUFFERREGIONARBPROC) (HDC hDC, int iLayerPlane, UINT uType);
|
||||||
|
typedef VOID (WINAPI * PFNWGLDELETEBUFFERREGIONARBPROC) (HANDLE hRegion);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLSAVEBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLRESTOREBUFFERREGIONARBPROC) (HANDLE hRegion, int x, int y, int width, int height, int xSrc, int ySrc);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_ARB_multisample
|
||||||
|
#define WGL_ARB_multisample 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_ARB_extensions_string
|
||||||
|
#define WGL_ARB_extensions_string 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern const char * WINAPI wglGetExtensionsStringARB (HDC);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef const char * (WINAPI * PFNWGLGETEXTENSIONSSTRINGARBPROC) (HDC hdc);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_ARB_pixel_format
|
||||||
|
#define WGL_ARB_pixel_format 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern BOOL WINAPI wglGetPixelFormatAttribivARB (HDC, int, int, UINT, const int *, int *);
|
||||||
|
extern BOOL WINAPI wglGetPixelFormatAttribfvARB (HDC, int, int, UINT, const int *, FLOAT *);
|
||||||
|
extern BOOL WINAPI wglChoosePixelFormatARB (HDC, const int *, const FLOAT *, UINT, int *, UINT *);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, int *piValues);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBFVARBPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, const int *piAttributes, FLOAT *pfValues);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATARBPROC) (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_ARB_make_current_read
|
||||||
|
#define WGL_ARB_make_current_read 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern BOOL WINAPI wglMakeContextCurrentARB (HDC, HDC, HGLRC);
|
||||||
|
extern HDC WINAPI wglGetCurrentReadDCARB (void);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef BOOL (WINAPI * PFNWGLMAKECONTEXTCURRENTARBPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
|
||||||
|
typedef HDC (WINAPI * PFNWGLGETCURRENTREADDCARBPROC) (void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_ARB_pbuffer
|
||||||
|
#define WGL_ARB_pbuffer 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern HPBUFFERARB WINAPI wglCreatePbufferARB (HDC, int, int, int, const int *);
|
||||||
|
extern HDC WINAPI wglGetPbufferDCARB (HPBUFFERARB);
|
||||||
|
extern int WINAPI wglReleasePbufferDCARB (HPBUFFERARB, HDC);
|
||||||
|
extern BOOL WINAPI wglDestroyPbufferARB (HPBUFFERARB);
|
||||||
|
extern BOOL WINAPI wglQueryPbufferARB (HPBUFFERARB, int, int *);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef HPBUFFERARB (WINAPI * PFNWGLCREATEPBUFFERARBPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList);
|
||||||
|
typedef HDC (WINAPI * PFNWGLGETPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer);
|
||||||
|
typedef int (WINAPI * PFNWGLRELEASEPBUFFERDCARBPROC) (HPBUFFERARB hPbuffer, HDC hDC);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLDESTROYPBUFFERARBPROC) (HPBUFFERARB hPbuffer);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLQUERYPBUFFERARBPROC) (HPBUFFERARB hPbuffer, int iAttribute, int *piValue);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_ARB_render_texture
|
||||||
|
#define WGL_ARB_render_texture 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern BOOL WINAPI wglBindTexImageARB (HPBUFFERARB, int);
|
||||||
|
extern BOOL WINAPI wglReleaseTexImageARB (HPBUFFERARB, int);
|
||||||
|
extern BOOL WINAPI wglSetPbufferAttribARB (HPBUFFERARB, const int *);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef BOOL (WINAPI * PFNWGLBINDTEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLRELEASETEXIMAGEARBPROC) (HPBUFFERARB hPbuffer, int iBuffer);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLSETPBUFFERATTRIBARBPROC) (HPBUFFERARB hPbuffer, const int *piAttribList);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_ARB_pixel_format_float
|
||||||
|
#define WGL_ARB_pixel_format_float 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_EXT_display_color_table
|
||||||
|
#define WGL_EXT_display_color_table 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern GLboolean WINAPI wglCreateDisplayColorTableEXT (GLushort);
|
||||||
|
extern GLboolean WINAPI wglLoadDisplayColorTableEXT (const GLushort *, GLuint);
|
||||||
|
extern GLboolean WINAPI wglBindDisplayColorTableEXT (GLushort);
|
||||||
|
extern VOID WINAPI wglDestroyDisplayColorTableEXT (GLushort);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef GLboolean (WINAPI * PFNWGLCREATEDISPLAYCOLORTABLEEXTPROC) (GLushort id);
|
||||||
|
typedef GLboolean (WINAPI * PFNWGLLOADDISPLAYCOLORTABLEEXTPROC) (const GLushort *table, GLuint length);
|
||||||
|
typedef GLboolean (WINAPI * PFNWGLBINDDISPLAYCOLORTABLEEXTPROC) (GLushort id);
|
||||||
|
typedef VOID (WINAPI * PFNWGLDESTROYDISPLAYCOLORTABLEEXTPROC) (GLushort id);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_EXT_extensions_string
|
||||||
|
#define WGL_EXT_extensions_string 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern const char * WINAPI wglGetExtensionsStringEXT (void);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef const char * (WINAPI * PFNWGLGETEXTENSIONSSTRINGEXTPROC) (void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_EXT_make_current_read
|
||||||
|
#define WGL_EXT_make_current_read 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern BOOL WINAPI wglMakeContextCurrentEXT (HDC, HDC, HGLRC);
|
||||||
|
extern HDC WINAPI wglGetCurrentReadDCEXT (void);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef BOOL (WINAPI * PFNWGLMAKECONTEXTCURRENTEXTPROC) (HDC hDrawDC, HDC hReadDC, HGLRC hglrc);
|
||||||
|
typedef HDC (WINAPI * PFNWGLGETCURRENTREADDCEXTPROC) (void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_EXT_pbuffer
|
||||||
|
#define WGL_EXT_pbuffer 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern HPBUFFEREXT WINAPI wglCreatePbufferEXT (HDC, int, int, int, const int *);
|
||||||
|
extern HDC WINAPI wglGetPbufferDCEXT (HPBUFFEREXT);
|
||||||
|
extern int WINAPI wglReleasePbufferDCEXT (HPBUFFEREXT, HDC);
|
||||||
|
extern BOOL WINAPI wglDestroyPbufferEXT (HPBUFFEREXT);
|
||||||
|
extern BOOL WINAPI wglQueryPbufferEXT (HPBUFFEREXT, int, int *);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef HPBUFFEREXT (WINAPI * PFNWGLCREATEPBUFFEREXTPROC) (HDC hDC, int iPixelFormat, int iWidth, int iHeight, const int *piAttribList);
|
||||||
|
typedef HDC (WINAPI * PFNWGLGETPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer);
|
||||||
|
typedef int (WINAPI * PFNWGLRELEASEPBUFFERDCEXTPROC) (HPBUFFEREXT hPbuffer, HDC hDC);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLDESTROYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLQUERYPBUFFEREXTPROC) (HPBUFFEREXT hPbuffer, int iAttribute, int *piValue);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_EXT_pixel_format
|
||||||
|
#define WGL_EXT_pixel_format 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern BOOL WINAPI wglGetPixelFormatAttribivEXT (HDC, int, int, UINT, int *, int *);
|
||||||
|
extern BOOL WINAPI wglGetPixelFormatAttribfvEXT (HDC, int, int, UINT, int *, FLOAT *);
|
||||||
|
extern BOOL WINAPI wglChoosePixelFormatEXT (HDC, const int *, const FLOAT *, UINT, int *, UINT *);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBIVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, int *piValues);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLGETPIXELFORMATATTRIBFVEXTPROC) (HDC hdc, int iPixelFormat, int iLayerPlane, UINT nAttributes, int *piAttributes, FLOAT *pfValues);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLCHOOSEPIXELFORMATEXTPROC) (HDC hdc, const int *piAttribIList, const FLOAT *pfAttribFList, UINT nMaxFormats, int *piFormats, UINT *nNumFormats);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_EXT_swap_control
|
||||||
|
#define WGL_EXT_swap_control 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern BOOL WINAPI wglSwapIntervalEXT (int);
|
||||||
|
extern int WINAPI wglGetSwapIntervalEXT (void);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef BOOL (WINAPI * PFNWGLSWAPINTERVALEXTPROC) (int interval);
|
||||||
|
typedef int (WINAPI * PFNWGLGETSWAPINTERVALEXTPROC) (void);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_EXT_depth_float
|
||||||
|
#define WGL_EXT_depth_float 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_NV_vertex_array_range
|
||||||
|
#define WGL_NV_vertex_array_range 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern void* WINAPI wglAllocateMemoryNV (GLsizei, GLfloat, GLfloat, GLfloat);
|
||||||
|
extern void WINAPI wglFreeMemoryNV (void *);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef void* (WINAPI * PFNWGLALLOCATEMEMORYNVPROC) (GLsizei size, GLfloat readfreq, GLfloat writefreq, GLfloat priority);
|
||||||
|
typedef void (WINAPI * PFNWGLFREEMEMORYNVPROC) (void *pointer);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_3DFX_multisample
|
||||||
|
#define WGL_3DFX_multisample 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_EXT_multisample
|
||||||
|
#define WGL_EXT_multisample 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_OML_sync_control
|
||||||
|
#define WGL_OML_sync_control 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern BOOL WINAPI wglGetSyncValuesOML (HDC, INT64 *, INT64 *, INT64 *);
|
||||||
|
extern BOOL WINAPI wglGetMscRateOML (HDC, INT32 *, INT32 *);
|
||||||
|
extern INT64 WINAPI wglSwapBuffersMscOML (HDC, INT64, INT64, INT64);
|
||||||
|
extern INT64 WINAPI wglSwapLayerBuffersMscOML (HDC, int, INT64, INT64, INT64);
|
||||||
|
extern BOOL WINAPI wglWaitForMscOML (HDC, INT64, INT64, INT64, INT64 *, INT64 *, INT64 *);
|
||||||
|
extern BOOL WINAPI wglWaitForSbcOML (HDC, INT64, INT64 *, INT64 *, INT64 *);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef BOOL (WINAPI * PFNWGLGETSYNCVALUESOMLPROC) (HDC hdc, INT64 *ust, INT64 *msc, INT64 *sbc);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLGETMSCRATEOMLPROC) (HDC hdc, INT32 *numerator, INT32 *denominator);
|
||||||
|
typedef INT64 (WINAPI * PFNWGLSWAPBUFFERSMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder);
|
||||||
|
typedef INT64 (WINAPI * PFNWGLSWAPLAYERBUFFERSMSCOMLPROC) (HDC hdc, int fuPlanes, INT64 target_msc, INT64 divisor, INT64 remainder);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLWAITFORMSCOMLPROC) (HDC hdc, INT64 target_msc, INT64 divisor, INT64 remainder, INT64 *ust, INT64 *msc, INT64 *sbc);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLWAITFORSBCOMLPROC) (HDC hdc, INT64 target_sbc, INT64 *ust, INT64 *msc, INT64 *sbc);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_I3D_digital_video_control
|
||||||
|
#define WGL_I3D_digital_video_control 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern BOOL WINAPI wglGetDigitalVideoParametersI3D (HDC, int, int *);
|
||||||
|
extern BOOL WINAPI wglSetDigitalVideoParametersI3D (HDC, int, const int *);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef BOOL (WINAPI * PFNWGLGETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int *piValue);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLSETDIGITALVIDEOPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int *piValue);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_I3D_gamma
|
||||||
|
#define WGL_I3D_gamma 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern BOOL WINAPI wglGetGammaTableParametersI3D (HDC, int, int *);
|
||||||
|
extern BOOL WINAPI wglSetGammaTableParametersI3D (HDC, int, const int *);
|
||||||
|
extern BOOL WINAPI wglGetGammaTableI3D (HDC, int, USHORT *, USHORT *, USHORT *);
|
||||||
|
extern BOOL WINAPI wglSetGammaTableI3D (HDC, int, const USHORT *, const USHORT *, const USHORT *);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef BOOL (WINAPI * PFNWGLGETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, int *piValue);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLSETGAMMATABLEPARAMETERSI3DPROC) (HDC hDC, int iAttribute, const int *piValue);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLGETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, USHORT *puRed, USHORT *puGreen, USHORT *puBlue);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLSETGAMMATABLEI3DPROC) (HDC hDC, int iEntries, const USHORT *puRed, const USHORT *puGreen, const USHORT *puBlue);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_I3D_genlock
|
||||||
|
#define WGL_I3D_genlock 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern BOOL WINAPI wglEnableGenlockI3D (HDC);
|
||||||
|
extern BOOL WINAPI wglDisableGenlockI3D (HDC);
|
||||||
|
extern BOOL WINAPI wglIsEnabledGenlockI3D (HDC, BOOL *);
|
||||||
|
extern BOOL WINAPI wglGenlockSourceI3D (HDC, UINT);
|
||||||
|
extern BOOL WINAPI wglGetGenlockSourceI3D (HDC, UINT *);
|
||||||
|
extern BOOL WINAPI wglGenlockSourceEdgeI3D (HDC, UINT);
|
||||||
|
extern BOOL WINAPI wglGetGenlockSourceEdgeI3D (HDC, UINT *);
|
||||||
|
extern BOOL WINAPI wglGenlockSampleRateI3D (HDC, UINT);
|
||||||
|
extern BOOL WINAPI wglGetGenlockSampleRateI3D (HDC, UINT *);
|
||||||
|
extern BOOL WINAPI wglGenlockSourceDelayI3D (HDC, UINT);
|
||||||
|
extern BOOL WINAPI wglGetGenlockSourceDelayI3D (HDC, UINT *);
|
||||||
|
extern BOOL WINAPI wglQueryGenlockMaxSourceDelayI3D (HDC, UINT *, UINT *);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef BOOL (WINAPI * PFNWGLENABLEGENLOCKI3DPROC) (HDC hDC);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLDISABLEGENLOCKI3DPROC) (HDC hDC);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLISENABLEDGENLOCKI3DPROC) (HDC hDC, BOOL *pFlag);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEI3DPROC) (HDC hDC, UINT uSource);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEI3DPROC) (HDC hDC, UINT *uSource);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT uEdge);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEEDGEI3DPROC) (HDC hDC, UINT *uEdge);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT uRate);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLGETGENLOCKSAMPLERATEI3DPROC) (HDC hDC, UINT *uRate);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT uDelay);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLGETGENLOCKSOURCEDELAYI3DPROC) (HDC hDC, UINT *uDelay);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLQUERYGENLOCKMAXSOURCEDELAYI3DPROC) (HDC hDC, UINT *uMaxLineDelay, UINT *uMaxPixelDelay);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_I3D_image_buffer
|
||||||
|
#define WGL_I3D_image_buffer 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern LPVOID WINAPI wglCreateImageBufferI3D (HDC, DWORD, UINT);
|
||||||
|
extern BOOL WINAPI wglDestroyImageBufferI3D (HDC, LPVOID);
|
||||||
|
extern BOOL WINAPI wglAssociateImageBufferEventsI3D (HDC, const HANDLE *, const LPVOID *, const DWORD *, UINT);
|
||||||
|
extern BOOL WINAPI wglReleaseImageBufferEventsI3D (HDC, const LPVOID *, UINT);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef LPVOID (WINAPI * PFNWGLCREATEIMAGEBUFFERI3DPROC) (HDC hDC, DWORD dwSize, UINT uFlags);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLDESTROYIMAGEBUFFERI3DPROC) (HDC hDC, LPVOID pAddress);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLASSOCIATEIMAGEBUFFEREVENTSI3DPROC) (HDC hDC, const HANDLE *pEvent, const LPVOID *pAddress, const DWORD *pSize, UINT count);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLRELEASEIMAGEBUFFEREVENTSI3DPROC) (HDC hDC, const LPVOID *pAddress, UINT count);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_I3D_swap_frame_lock
|
||||||
|
#define WGL_I3D_swap_frame_lock 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern BOOL WINAPI wglEnableFrameLockI3D (void);
|
||||||
|
extern BOOL WINAPI wglDisableFrameLockI3D (void);
|
||||||
|
extern BOOL WINAPI wglIsEnabledFrameLockI3D (BOOL *);
|
||||||
|
extern BOOL WINAPI wglQueryFrameLockMasterI3D (BOOL *);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef BOOL (WINAPI * PFNWGLENABLEFRAMELOCKI3DPROC) (void);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLDISABLEFRAMELOCKI3DPROC) (void);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLISENABLEDFRAMELOCKI3DPROC) (BOOL *pFlag);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLQUERYFRAMELOCKMASTERI3DPROC) (BOOL *pFlag);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_I3D_swap_frame_usage
|
||||||
|
#define WGL_I3D_swap_frame_usage 1
|
||||||
|
#ifdef WGL_WGLEXT_PROTOTYPES
|
||||||
|
extern BOOL WINAPI wglGetFrameUsageI3D (float *);
|
||||||
|
extern BOOL WINAPI wglBeginFrameTrackingI3D (void);
|
||||||
|
extern BOOL WINAPI wglEndFrameTrackingI3D (void);
|
||||||
|
extern BOOL WINAPI wglQueryFrameTrackingI3D (DWORD *, DWORD *, float *);
|
||||||
|
#endif /* WGL_WGLEXT_PROTOTYPES */
|
||||||
|
typedef BOOL (WINAPI * PFNWGLGETFRAMEUSAGEI3DPROC) (float *pUsage);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLBEGINFRAMETRACKINGI3DPROC) (void);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLENDFRAMETRACKINGI3DPROC) (void);
|
||||||
|
typedef BOOL (WINAPI * PFNWGLQUERYFRAMETRACKINGI3DPROC) (DWORD *pFrameCount, DWORD *pMissedFrames, float *pLastMissedUsage);
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_ATI_pixel_format_float
|
||||||
|
#define WGL_ATI_pixel_format_float 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_NV_float_buffer
|
||||||
|
#define WGL_NV_float_buffer 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_EXT_pixel_format_packed_float
|
||||||
|
#define WGL_EXT_pixel_format_packed_float 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifndef WGL_EXT_framebuffer_sRGB
|
||||||
|
#define WGL_EXT_framebuffer_sRGB 1
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
Binary file not shown.
File diff suppressed because it is too large
Load Diff
|
@ -0,0 +1,277 @@
|
||||||
|
#ifndef MAIN_H
|
||||||
|
#define MAIN_H
|
||||||
|
|
||||||
|
#ifndef _WIN32
|
||||||
|
//#define VPDEBUG
|
||||||
|
#endif
|
||||||
|
#ifdef VPDEBUG
|
||||||
|
void dump_tex(int id);
|
||||||
|
void dump_start();
|
||||||
|
void dump_stop();
|
||||||
|
extern int dumping;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#define zscale 1.0f
|
||||||
|
|
||||||
|
typedef struct _wrapper_config
|
||||||
|
{
|
||||||
|
int res;
|
||||||
|
int fbo;
|
||||||
|
int anisofilter;
|
||||||
|
int vram_size;
|
||||||
|
} wrapper_config;
|
||||||
|
extern wrapper_config config;
|
||||||
|
|
||||||
|
|
||||||
|
// VP added this utility function
|
||||||
|
// returns the bytes per pixel of a given GR texture format
|
||||||
|
int grTexFormatSize(int fmt);
|
||||||
|
|
||||||
|
extern int packed_pixels_support;
|
||||||
|
extern int ati_sucks;
|
||||||
|
extern float largest_supported_anisotropy;
|
||||||
|
|
||||||
|
extern int default_texture; // the infamous "32*1024*1024" is now configurable
|
||||||
|
extern int depth_texture;
|
||||||
|
void set_depth_shader();
|
||||||
|
void set_bw_shader();
|
||||||
|
extern float invtex[2];
|
||||||
|
extern int buffer_cleared; // mark that the buffer has been cleared, used to check if we need to reload the texture buffer content
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
#include <windows.h>
|
||||||
|
extern "C" {
|
||||||
|
#include "gl.h"
|
||||||
|
#include "glext.h"
|
||||||
|
#include "wglext.h"
|
||||||
|
}
|
||||||
|
#else
|
||||||
|
#include <stdio.h>
|
||||||
|
//#define printf(...)
|
||||||
|
#define GL_GLEXT_PROTOTYPES
|
||||||
|
#include <SDL_opengl.h>
|
||||||
|
#endif // _WIN32
|
||||||
|
#include "glide.h"
|
||||||
|
|
||||||
|
void display_warning(const unsigned char *text, ...);
|
||||||
|
void display_warning(const char *text, ...);
|
||||||
|
void init_geometry();
|
||||||
|
void init_textures();
|
||||||
|
void init_combiner();
|
||||||
|
void free_textures();
|
||||||
|
void updateCombiner(int i);
|
||||||
|
void updateCombinera(int i);
|
||||||
|
void remove_tex(unsigned int idmin, unsigned int idmax);
|
||||||
|
void add_tex(unsigned int id);
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
extern PFNGLACTIVETEXTUREARBPROC glActiveTextureARB;
|
||||||
|
extern PFNGLMULTITEXCOORD2FARBPROC glMultiTexCoord2fARB;
|
||||||
|
extern PFNGLBLENDFUNCSEPARATEEXTPROC glBlendFuncSeparateEXT;
|
||||||
|
extern PFNGLFOGCOORDFPROC glFogCoordfEXT;
|
||||||
|
|
||||||
|
extern PFNGLCREATESHADEROBJECTARBPROC glCreateShaderObjectARB;
|
||||||
|
extern PFNGLSHADERSOURCEARBPROC glShaderSourceARB;
|
||||||
|
extern PFNGLCOMPILESHADERARBPROC glCompileShaderARB;
|
||||||
|
extern PFNGLCREATEPROGRAMOBJECTARBPROC glCreateProgramObjectARB;
|
||||||
|
extern PFNGLATTACHOBJECTARBPROC glAttachObjectARB;
|
||||||
|
extern PFNGLLINKPROGRAMARBPROC glLinkProgramARB;
|
||||||
|
extern PFNGLUSEPROGRAMOBJECTARBPROC glUseProgramObjectARB;
|
||||||
|
extern PFNGLGETUNIFORMLOCATIONARBPROC glGetUniformLocationARB;
|
||||||
|
extern PFNGLUNIFORM1IARBPROC glUniform1iARB;
|
||||||
|
extern PFNGLUNIFORM4IARBPROC glUniform4iARB;
|
||||||
|
extern PFNGLUNIFORM4FARBPROC glUniform4fARB;
|
||||||
|
extern PFNGLUNIFORM1FARBPROC glUniform1fARB;
|
||||||
|
extern PFNGLDELETEOBJECTARBPROC glDeleteObjectARB;
|
||||||
|
extern PFNGLGETINFOLOGARBPROC glGetInfoLogARB;
|
||||||
|
extern PFNGLGETOBJECTPARAMETERIVARBPROC glGetObjectParameterivARB;
|
||||||
|
extern PFNGLSECONDARYCOLOR3FPROC glSecondaryColor3f;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
extern int w_buffer_mode;
|
||||||
|
extern int nbTextureUnits;
|
||||||
|
extern int width, height, widtho, heighto;
|
||||||
|
extern int tex0_width, tex0_height, tex1_width, tex1_height;
|
||||||
|
extern float texture_env_color[4];
|
||||||
|
extern int fog_enabled;
|
||||||
|
extern float lambda;
|
||||||
|
extern int need_lambda[2];
|
||||||
|
extern float lambda_color[2][4];
|
||||||
|
extern int inverted_culling;
|
||||||
|
extern int culling_mode;
|
||||||
|
extern int render_to_texture;
|
||||||
|
extern int lfb_color_fmt;
|
||||||
|
extern int need_to_compile;
|
||||||
|
extern int blackandwhite0;
|
||||||
|
extern int blackandwhite1;
|
||||||
|
extern int TMU_SIZE;
|
||||||
|
|
||||||
|
extern int blend_func_separate_support;
|
||||||
|
extern int fog_coord_support;
|
||||||
|
//extern int pbuffer_support;
|
||||||
|
extern int glsl_support;
|
||||||
|
extern unsigned int pBufferAddress;
|
||||||
|
extern int viewport_width, viewport_height, viewport_offset, nvidia_viewport_hack;
|
||||||
|
extern int UMAmode;
|
||||||
|
|
||||||
|
void grChromaRangeExt(GrColor_t color0, GrColor_t color1, FxU32 mode);
|
||||||
|
void grChromaRangeModeExt(GrChromakeyMode_t mode);
|
||||||
|
void grTexChromaRangeExt(GrChipID_t tmu, GrColor_t color0, GrColor_t color1, GrTexChromakeyMode_t mode);
|
||||||
|
void grTexChromaModeExt(GrChipID_t tmu, GrChromakeyMode_t mode);
|
||||||
|
void updateTexture();
|
||||||
|
void reloadTexture();
|
||||||
|
void free_combiners();
|
||||||
|
void compile_shader();
|
||||||
|
void set_lambda();
|
||||||
|
void set_copy_shader();
|
||||||
|
|
||||||
|
// config functions
|
||||||
|
|
||||||
|
//FX_ENTRY void FX_CALL grConfigWrapperExt(HINSTANCE instance, HWND hwnd);
|
||||||
|
FX_ENTRY void FX_CALL grConfigWrapperExt(FxI32, FxI32, FxBool, FxBool);
|
||||||
|
FX_ENTRY GrScreenResolution_t FX_CALL grWrapperFullScreenResolutionExt(FxU32*, FxU32*);
|
||||||
|
FX_ENTRY char ** FX_CALL grQueryResolutionsExt(FxI32*);
|
||||||
|
FX_ENTRY FxBool FX_CALL grKeyPressedExt(FxU32 key);
|
||||||
|
FX_ENTRY void FX_CALL grGetGammaTableExt(FxU32, FxU32*, FxU32*, FxU32*);
|
||||||
|
|
||||||
|
int getFullScreenWidth();
|
||||||
|
int getFullScreenHeight();
|
||||||
|
|
||||||
|
// ZIGGY framebuffer copy extension
|
||||||
|
// allow to copy the depth or color buffer from back/front to front/back
|
||||||
|
#define GR_FBCOPY_MODE_DEPTH 0
|
||||||
|
#define GR_FBCOPY_MODE_COLOR 1
|
||||||
|
#define GR_FBCOPY_BUFFER_BACK 0
|
||||||
|
#define GR_FBCOPY_BUFFER_FRONT 1
|
||||||
|
FX_ENTRY void FX_CALL grFramebufferCopyExt(int x, int y, int w, int h,
|
||||||
|
int buffer_from, int buffer_to, int mode);
|
||||||
|
|
||||||
|
|
||||||
|
// COMBINE extension
|
||||||
|
|
||||||
|
typedef FxU32 GrCCUColor_t;
|
||||||
|
typedef FxU32 GrACUColor_t;
|
||||||
|
typedef FxU32 GrTCCUColor_t;
|
||||||
|
typedef FxU32 GrTACUColor_t;
|
||||||
|
|
||||||
|
typedef FxU32 GrCombineMode_t;
|
||||||
|
#define GR_FUNC_MODE_ZERO 0x00
|
||||||
|
#define GR_FUNC_MODE_X 0x01
|
||||||
|
#define GR_FUNC_MODE_ONE_MINUS_X 0x02
|
||||||
|
#define GR_FUNC_MODE_NEGATIVE_X 0x03
|
||||||
|
#define GR_FUNC_MODE_X_MINUS_HALF 0x04
|
||||||
|
|
||||||
|
#define GR_CMBX_ZERO 0x00
|
||||||
|
#define GR_CMBX_TEXTURE_ALPHA 0x01
|
||||||
|
#define GR_CMBX_ALOCAL 0x02
|
||||||
|
#define GR_CMBX_AOTHER 0x03
|
||||||
|
#define GR_CMBX_B 0x04
|
||||||
|
#define GR_CMBX_CONSTANT_ALPHA 0x05
|
||||||
|
#define GR_CMBX_CONSTANT_COLOR 0x06
|
||||||
|
#define GR_CMBX_DETAIL_FACTOR 0x07
|
||||||
|
#define GR_CMBX_ITALPHA 0x08
|
||||||
|
#define GR_CMBX_ITRGB 0x09
|
||||||
|
#define GR_CMBX_LOCAL_TEXTURE_ALPHA 0x0a
|
||||||
|
#define GR_CMBX_LOCAL_TEXTURE_RGB 0x0b
|
||||||
|
#define GR_CMBX_LOD_FRAC 0x0c
|
||||||
|
#define GR_CMBX_OTHER_TEXTURE_ALPHA 0x0d
|
||||||
|
#define GR_CMBX_OTHER_TEXTURE_RGB 0x0e
|
||||||
|
#define GR_CMBX_TEXTURE_RGB 0x0f
|
||||||
|
#define GR_CMBX_TMU_CALPHA 0x10
|
||||||
|
#define GR_CMBX_TMU_CCOLOR 0x11
|
||||||
|
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grColorCombineExt(GrCCUColor_t a, GrCombineMode_t a_mode,
|
||||||
|
GrCCUColor_t b, GrCombineMode_t b_mode,
|
||||||
|
GrCCUColor_t c, FxBool c_invert,
|
||||||
|
GrCCUColor_t d, FxBool d_invert,
|
||||||
|
FxU32 shift, FxBool invert);
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grAlphaCombineExt(GrACUColor_t a, GrCombineMode_t a_mode,
|
||||||
|
GrACUColor_t b, GrCombineMode_t b_mode,
|
||||||
|
GrACUColor_t c, FxBool c_invert,
|
||||||
|
GrACUColor_t d, FxBool d_invert,
|
||||||
|
FxU32 shift, FxBool invert);
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grTexColorCombineExt(GrChipID_t tmu,
|
||||||
|
GrTCCUColor_t a, GrCombineMode_t a_mode,
|
||||||
|
GrTCCUColor_t b, GrCombineMode_t b_mode,
|
||||||
|
GrTCCUColor_t c, FxBool c_invert,
|
||||||
|
GrTCCUColor_t d, FxBool d_invert,
|
||||||
|
FxU32 shift, FxBool invert);
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grTexAlphaCombineExt(GrChipID_t tmu,
|
||||||
|
GrTACUColor_t a, GrCombineMode_t a_mode,
|
||||||
|
GrTACUColor_t b, GrCombineMode_t b_mode,
|
||||||
|
GrTACUColor_t c, FxBool c_invert,
|
||||||
|
GrTACUColor_t d, FxBool d_invert,
|
||||||
|
FxU32 shift, FxBool invert);
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grConstantColorValueExt(GrChipID_t tmu,
|
||||||
|
GrColor_t value);
|
||||||
|
|
||||||
|
#define CHECK_FRAMEBUFFER_STATUS() \
|
||||||
|
{\
|
||||||
|
GLenum status; \
|
||||||
|
status = glCheckFramebufferStatusEXT(GL_FRAMEBUFFER_EXT); \
|
||||||
|
/*display_warning("%x\n", status);*/\
|
||||||
|
switch(status) { \
|
||||||
|
case GL_FRAMEBUFFER_COMPLETE_EXT: \
|
||||||
|
/*display_warning("framebuffer complete!\n");*/\
|
||||||
|
break; \
|
||||||
|
case GL_FRAMEBUFFER_UNSUPPORTED_EXT: \
|
||||||
|
display_warning("framebuffer GL_FRAMEBUFFER_UNSUPPORTED_EXT\n");\
|
||||||
|
/* you gotta choose different formats */ \
|
||||||
|
/*assert(0);*/ \
|
||||||
|
break; \
|
||||||
|
case GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT: \
|
||||||
|
display_warning("framebuffer INCOMPLETE_ATTACHMENT\n");\
|
||||||
|
break; \
|
||||||
|
case GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT: \
|
||||||
|
display_warning("framebuffer FRAMEBUFFER_MISSING_ATTACHMENT\n");\
|
||||||
|
break; \
|
||||||
|
case GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT: \
|
||||||
|
display_warning("framebuffer FRAMEBUFFER_DIMENSIONS\n");\
|
||||||
|
break; \
|
||||||
|
/*case GL_FRAMEBUFFER_INCOMPLETE_DUPLICATE_ATTACHMENT_EXT: \
|
||||||
|
display_warning("framebuffer INCOMPLETE_DUPLICATE_ATTACHMENT\n");\
|
||||||
|
break;*/ \
|
||||||
|
case GL_FRAMEBUFFER_INCOMPLETE_FORMATS_EXT: \
|
||||||
|
display_warning("framebuffer INCOMPLETE_FORMATS\n");\
|
||||||
|
break; \
|
||||||
|
case GL_FRAMEBUFFER_INCOMPLETE_DRAW_BUFFER_EXT: \
|
||||||
|
display_warning("framebuffer INCOMPLETE_DRAW_BUFFER\n");\
|
||||||
|
break; \
|
||||||
|
case GL_FRAMEBUFFER_INCOMPLETE_READ_BUFFER_EXT: \
|
||||||
|
display_warning("framebuffer INCOMPLETE_READ_BUFFER\n");\
|
||||||
|
break; \
|
||||||
|
case GL_FRAMEBUFFER_BINDING_EXT: \
|
||||||
|
display_warning("framebuffer BINDING_EXT\n");\
|
||||||
|
break; \
|
||||||
|
default: \
|
||||||
|
break; \
|
||||||
|
/* programming error; will fail on all hardware */ \
|
||||||
|
/*assert(0);*/ \
|
||||||
|
}\
|
||||||
|
}
|
||||||
|
|
||||||
|
#ifdef VPDEBUG
|
||||||
|
#define LOGGING
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#ifdef LOGGING
|
||||||
|
void OPEN_LOG();
|
||||||
|
void CLOSE_LOG();
|
||||||
|
void LOG(const char *text, ...);
|
||||||
|
#else // LOGGING
|
||||||
|
#define OPEN_LOG()
|
||||||
|
#define CLOSE_LOG()
|
||||||
|
#define LOG
|
||||||
|
#endif // LOGGING
|
||||||
|
|
||||||
|
#endif
|
|
@ -0,0 +1,869 @@
|
||||||
|
#ifdef _WIN32
|
||||||
|
#include <windows.h>
|
||||||
|
#else // _WIN32
|
||||||
|
#include <stdlib.h>
|
||||||
|
#endif // _WIN32
|
||||||
|
#include "glide.h"
|
||||||
|
#include "main.h"
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
/* Napalm extensions to GrTextureFormat_t */
|
||||||
|
#define GR_TEXFMT_ARGB_CMP_FXT1 0x11
|
||||||
|
#define GR_TEXFMT_ARGB_8888 0x12
|
||||||
|
#define GR_TEXFMT_YUYV_422 0x13
|
||||||
|
#define GR_TEXFMT_UYVY_422 0x14
|
||||||
|
#define GR_TEXFMT_AYUV_444 0x15
|
||||||
|
#define GR_TEXFMT_ARGB_CMP_DXT1 0x16
|
||||||
|
#define GR_TEXFMT_ARGB_CMP_DXT2 0x17
|
||||||
|
#define GR_TEXFMT_ARGB_CMP_DXT3 0x18
|
||||||
|
#define GR_TEXFMT_ARGB_CMP_DXT4 0x19
|
||||||
|
#define GR_TEXFMT_ARGB_CMP_DXT5 0x1A
|
||||||
|
#define GR_TEXTFMT_RGB_888 0xFF
|
||||||
|
|
||||||
|
int TMU_SIZE = 8*2048*2048;
|
||||||
|
static unsigned char* texture = NULL;
|
||||||
|
|
||||||
|
int packed_pixels_support = -1;
|
||||||
|
int ati_sucks = -1;
|
||||||
|
float largest_supported_anisotropy = 1.0f;
|
||||||
|
|
||||||
|
#ifndef GL_TEXTURE_MAX_ANISOTROPY_EXT
|
||||||
|
#define GL_TEXTURE_MAX_ANISOTROPY_EXT 0x84FE
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int tex0_width, tex0_height, tex1_width, tex1_height;
|
||||||
|
float lambda;
|
||||||
|
|
||||||
|
static int min_filter0, mag_filter0, wrap_s0, wrap_t0;
|
||||||
|
static int min_filter1, mag_filter1, wrap_s1, wrap_t1;
|
||||||
|
|
||||||
|
unsigned char *filter(unsigned char *source, int width, int height, int *width2, int *height2);
|
||||||
|
|
||||||
|
typedef struct _texlist
|
||||||
|
{
|
||||||
|
unsigned int id;
|
||||||
|
struct _texlist *next;
|
||||||
|
} texlist;
|
||||||
|
|
||||||
|
static int nbTex = 0;
|
||||||
|
static texlist *list = NULL;
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
extern PFNGLDELETERENDERBUFFERSEXTPROC glDeleteRenderbuffersEXT;
|
||||||
|
extern PFNGLDELETEFRAMEBUFFERSEXTPROC glDeleteFramebuffersEXT;
|
||||||
|
extern PFNGLCOMPRESSEDTEXIMAGE2DARBPROC glCompressedTexImage2DARB;
|
||||||
|
#endif
|
||||||
|
void remove_tex(unsigned int idmin, unsigned int idmax)
|
||||||
|
{
|
||||||
|
unsigned int *t;
|
||||||
|
int n = 0;
|
||||||
|
texlist *aux = list;
|
||||||
|
int sz = nbTex;
|
||||||
|
if (aux == NULL) return;
|
||||||
|
t = (unsigned int*)malloc(sz * sizeof(int));
|
||||||
|
while (aux && aux->id >= idmin && aux->id < idmax)
|
||||||
|
{
|
||||||
|
if (n >= sz)
|
||||||
|
t = (unsigned int *) realloc(t, ++sz*sizeof(int));
|
||||||
|
t[n++] = aux->id;
|
||||||
|
aux = aux->next;
|
||||||
|
free(list);
|
||||||
|
list = aux;
|
||||||
|
nbTex--;
|
||||||
|
}
|
||||||
|
while (aux != NULL && aux->next != NULL)
|
||||||
|
{
|
||||||
|
if (aux->next->id >= idmin && aux->next->id < idmax)
|
||||||
|
{
|
||||||
|
texlist *aux2 = aux->next->next;
|
||||||
|
if (n >= sz)
|
||||||
|
t = (unsigned int *) realloc(t, ++sz*sizeof(int));
|
||||||
|
t[n++] = aux->next->id;
|
||||||
|
free(aux->next);
|
||||||
|
aux->next = aux2;
|
||||||
|
nbTex--;
|
||||||
|
}
|
||||||
|
aux = aux->next;
|
||||||
|
}
|
||||||
|
glDeleteTextures(n, t);
|
||||||
|
free(t);
|
||||||
|
//printf("RMVTEX nbtex is now %d (%06x - %06x)\n", nbTex, idmin, idmax);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void add_tex(unsigned int id)
|
||||||
|
{
|
||||||
|
texlist *aux = list;
|
||||||
|
texlist *aux2;
|
||||||
|
//printf("ADDTEX nbtex is now %d (%06x)\n", nbTex, id);
|
||||||
|
if (list == NULL || id < list->id)
|
||||||
|
{
|
||||||
|
nbTex++;
|
||||||
|
list = (texlist*)malloc(sizeof(texlist));
|
||||||
|
list->next = aux;
|
||||||
|
list->id = id;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
while (aux->next != NULL && aux->next->id < id) aux = aux->next;
|
||||||
|
// ZIGGY added this test so that add_tex now accept re-adding an existing texture
|
||||||
|
if (aux->next != NULL && aux->next->id == id) return;
|
||||||
|
nbTex++;
|
||||||
|
aux2 = aux->next;
|
||||||
|
aux->next = (texlist*)malloc(sizeof(texlist));
|
||||||
|
aux->next->id = id;
|
||||||
|
aux->next->next = aux2;
|
||||||
|
}
|
||||||
|
|
||||||
|
void init_textures()
|
||||||
|
{
|
||||||
|
tex0_width = tex0_height = tex1_width = tex1_height = 2;
|
||||||
|
// ZIGGY because remove_tex isn't called (Pj64 doesn't like it), it's better
|
||||||
|
// to leave these so that they'll be reused (otherwise we have a memory leak)
|
||||||
|
// list = NULL;
|
||||||
|
// nbTex = 0;
|
||||||
|
|
||||||
|
if (!texture) texture = (unsigned char*)malloc(2048*2048*4);
|
||||||
|
}
|
||||||
|
|
||||||
|
void free_textures()
|
||||||
|
{
|
||||||
|
#ifndef WIN32
|
||||||
|
// ZIGGY for some reasons, Pj64 doesn't like remove_tex on exit
|
||||||
|
remove_tex(0x00000000, 0xFFFFFFFF);
|
||||||
|
#endif
|
||||||
|
if (texture != NULL) {
|
||||||
|
free(texture);
|
||||||
|
texture = NULL;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
FX_ENTRY FxU32 FX_CALL
|
||||||
|
grTexMinAddress( GrChipID_t tmu )
|
||||||
|
{
|
||||||
|
LOG("grTexMinAddress(%d)\r\n", tmu);
|
||||||
|
if (UMAmode)
|
||||||
|
return 0;
|
||||||
|
else
|
||||||
|
return tmu*TMU_SIZE;
|
||||||
|
}
|
||||||
|
|
||||||
|
FX_ENTRY FxU32 FX_CALL
|
||||||
|
grTexMaxAddress( GrChipID_t tmu )
|
||||||
|
{
|
||||||
|
LOG("grTexMaxAddress(%d)\r\n", tmu);
|
||||||
|
if (UMAmode)
|
||||||
|
return TMU_SIZE*2 - 1;
|
||||||
|
else
|
||||||
|
return tmu*TMU_SIZE + TMU_SIZE - 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
FX_ENTRY FxU32 FX_CALL
|
||||||
|
grTexTextureMemRequired( FxU32 evenOdd,
|
||||||
|
GrTexInfo *info )
|
||||||
|
{
|
||||||
|
int width, height;
|
||||||
|
LOG("grTextureMemRequired(%d)\r\n", evenOdd);
|
||||||
|
if (info->largeLodLog2 != info->smallLodLog2) display_warning("grTexTextureMemRequired : loading more than one LOD");
|
||||||
|
|
||||||
|
if (info->aspectRatioLog2 < 0)
|
||||||
|
{
|
||||||
|
height = 1 << info->largeLodLog2;
|
||||||
|
width = height >> -info->aspectRatioLog2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
width = 1 << info->largeLodLog2;
|
||||||
|
height = width >> info->aspectRatioLog2;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch(info->format)
|
||||||
|
{
|
||||||
|
case GR_TEXFMT_ALPHA_8:
|
||||||
|
case GR_TEXFMT_INTENSITY_8: // I8 support - H.Morii
|
||||||
|
case GR_TEXFMT_ALPHA_INTENSITY_44:
|
||||||
|
return width*height;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ARGB_1555:
|
||||||
|
case GR_TEXFMT_ARGB_4444:
|
||||||
|
case GR_TEXFMT_ALPHA_INTENSITY_88:
|
||||||
|
case GR_TEXFMT_RGB_565:
|
||||||
|
return (width*height)<<1;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ARGB_8888:
|
||||||
|
return (width*height)<<2;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ARGB_CMP_DXT1: // FXT1,DXT1,5 support - H.Morii
|
||||||
|
return ((((width+0x3)&~0x3)*((height+0x3)&~0x3))>>1);
|
||||||
|
case GR_TEXFMT_ARGB_CMP_DXT3:
|
||||||
|
return ((width+0x3)&~0x3)*((height+0x3)&~0x3);
|
||||||
|
case GR_TEXFMT_ARGB_CMP_DXT5:
|
||||||
|
return ((width+0x3)&~0x3)*((height+0x3)&~0x3);
|
||||||
|
case GR_TEXFMT_ARGB_CMP_FXT1:
|
||||||
|
return ((((width+0x7)&~0x7)*((height+0x3)&~0x3))>>1);
|
||||||
|
default:
|
||||||
|
display_warning("grTexTextureMemRequired : unknown texture format: %x", info->format);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
FX_ENTRY FxU32 FX_CALL
|
||||||
|
grTexCalcMemRequired(
|
||||||
|
GrLOD_t lodmin, GrLOD_t lodmax,
|
||||||
|
GrAspectRatio_t aspect, GrTextureFormat_t fmt)
|
||||||
|
{
|
||||||
|
int width, height;
|
||||||
|
LOG("grTexCalcMemRequired(%d, %d, %d, %d)\r\n", lodmin, lodmax, aspect, fmt);
|
||||||
|
if (lodmax != lodmin) display_warning("grTexCalcMemRequired : loading more than one LOD");
|
||||||
|
|
||||||
|
if (aspect < 0)
|
||||||
|
{
|
||||||
|
height = 1 << lodmax;
|
||||||
|
width = height >> -aspect;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
width = 1 << lodmax;
|
||||||
|
height = width >> aspect;
|
||||||
|
}
|
||||||
|
|
||||||
|
switch(fmt)
|
||||||
|
{
|
||||||
|
case GR_TEXFMT_ALPHA_8:
|
||||||
|
case GR_TEXFMT_INTENSITY_8: // I8 support - H.Morii
|
||||||
|
case GR_TEXFMT_ALPHA_INTENSITY_44:
|
||||||
|
return width*height;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ARGB_1555:
|
||||||
|
case GR_TEXFMT_ARGB_4444:
|
||||||
|
case GR_TEXFMT_ALPHA_INTENSITY_88:
|
||||||
|
case GR_TEXFMT_RGB_565:
|
||||||
|
return (width*height)<<1;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ARGB_8888:
|
||||||
|
return (width*height)<<2;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ARGB_CMP_DXT1: // FXT1,DXT1,5 support - H.Morii
|
||||||
|
return ((((width+0x3)&~0x3)*((height+0x3)&~0x3))>>1);
|
||||||
|
case GR_TEXFMT_ARGB_CMP_DXT3:
|
||||||
|
return ((width+0x3)&~0x3)*((height+0x3)&~0x3);
|
||||||
|
case GR_TEXFMT_ARGB_CMP_DXT5:
|
||||||
|
return ((width+0x3)&~0x3)*((height+0x3)&~0x3);
|
||||||
|
case GR_TEXFMT_ARGB_CMP_FXT1:
|
||||||
|
return ((((width+0x7)&~0x7)*((height+0x3)&~0x3))>>1);
|
||||||
|
default:
|
||||||
|
display_warning("grTexTextureMemRequired : unknown texture format: %x", fmt);
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
int grTexFormatSize(int fmt)
|
||||||
|
{
|
||||||
|
int factor = -1;
|
||||||
|
switch(fmt) {
|
||||||
|
case GR_TEXFMT_ALPHA_8:
|
||||||
|
case GR_TEXFMT_INTENSITY_8: // I8 support - H.Morii
|
||||||
|
factor = 1;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ALPHA_INTENSITY_44:
|
||||||
|
factor = 1;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_RGB_565:
|
||||||
|
factor = 2;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ARGB_1555:
|
||||||
|
factor = 2;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ALPHA_INTENSITY_88:
|
||||||
|
factor = 2;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ARGB_4444:
|
||||||
|
factor = 2;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ARGB_8888:
|
||||||
|
factor = 4;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ARGB_CMP_DXT1: // FXT1,DXT1,5 support - H.Morii
|
||||||
|
factor = 8; // HACKALERT: factor holds block bytes
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ARGB_CMP_DXT3: // FXT1,DXT1,5 support - H.Morii
|
||||||
|
factor = 16; // HACKALERT: factor holds block bytes
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ARGB_CMP_DXT5:
|
||||||
|
factor = 16;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ARGB_CMP_FXT1:
|
||||||
|
factor = 8;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
display_warning("grTexFormatSize : unknown texture format: %x", fmt);
|
||||||
|
}
|
||||||
|
return factor;
|
||||||
|
}
|
||||||
|
|
||||||
|
int grTexFormat2GLPackedFmt(int fmt, int * gltexfmt, int * glpixfmt, int * glpackfmt)
|
||||||
|
{
|
||||||
|
int factor = -1;
|
||||||
|
switch(fmt) {
|
||||||
|
case GR_TEXFMT_ALPHA_8:
|
||||||
|
factor = 1;
|
||||||
|
*gltexfmt = GL_INTENSITY8;
|
||||||
|
*glpixfmt = GL_LUMINANCE;
|
||||||
|
*glpackfmt = GL_UNSIGNED_BYTE;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_INTENSITY_8: // I8 support - H.Morii
|
||||||
|
factor = 1;
|
||||||
|
*gltexfmt = GL_LUMINANCE8;
|
||||||
|
*glpixfmt = GL_LUMINANCE;
|
||||||
|
*glpackfmt = GL_UNSIGNED_BYTE;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ALPHA_INTENSITY_44:
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_RGB_565:
|
||||||
|
factor = 2;
|
||||||
|
*gltexfmt = GL_RGB;
|
||||||
|
*glpixfmt = GL_RGB;
|
||||||
|
*glpackfmt = GL_UNSIGNED_SHORT_5_6_5;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ARGB_1555:
|
||||||
|
if (ati_sucks > 0) return -1; // ATI sucks as usual (fixes slowdown on ATI)
|
||||||
|
factor = 2;
|
||||||
|
*gltexfmt = GL_RGB5_A1;
|
||||||
|
*glpixfmt = GL_BGRA;
|
||||||
|
*glpackfmt = GL_UNSIGNED_SHORT_1_5_5_5_REV;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ALPHA_INTENSITY_88:
|
||||||
|
factor = 2;
|
||||||
|
*gltexfmt = GL_LUMINANCE8_ALPHA8;
|
||||||
|
*glpixfmt = GL_LUMINANCE_ALPHA;
|
||||||
|
*glpackfmt = GL_UNSIGNED_BYTE;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ARGB_4444:
|
||||||
|
factor = 2;
|
||||||
|
*gltexfmt = GL_RGBA4;
|
||||||
|
*glpixfmt = GL_BGRA;
|
||||||
|
*glpackfmt = GL_UNSIGNED_SHORT_4_4_4_4_REV;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ARGB_8888:
|
||||||
|
factor = 4;
|
||||||
|
*gltexfmt = GL_RGBA8;
|
||||||
|
*glpixfmt = GL_BGRA;
|
||||||
|
*glpackfmt = GL_UNSIGNED_INT_8_8_8_8_REV;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ARGB_CMP_DXT1: // FXT1,DXT1,5 support - H.Morii
|
||||||
|
// HACKALERT: 3Dfx Glide uses GR_TEXFMT_ARGB_CMP_DXT1 for both opaque DXT1 and DXT1 with 1bit alpha.
|
||||||
|
// GlideHQ compiled with GLIDE64_DXTN option enabled, uses opaqe DXT1 only.
|
||||||
|
factor = 8; // HACKALERT: factor holds block bytes
|
||||||
|
*gltexfmt = GL_COMPRESSED_RGB_S3TC_DXT1_EXT; // these variables aren't used
|
||||||
|
*glpixfmt = GL_COMPRESSED_RGB_S3TC_DXT1_EXT;
|
||||||
|
*glpackfmt = GL_COMPRESSED_RGB_S3TC_DXT1_EXT;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ARGB_CMP_DXT3:
|
||||||
|
factor = 16;
|
||||||
|
*gltexfmt = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT;
|
||||||
|
*glpixfmt = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT;
|
||||||
|
*glpackfmt = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ARGB_CMP_DXT5:
|
||||||
|
factor = 16;
|
||||||
|
*gltexfmt = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT;
|
||||||
|
*glpixfmt = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT;
|
||||||
|
*glpackfmt = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ARGB_CMP_FXT1:
|
||||||
|
factor = 8;
|
||||||
|
*gltexfmt = GL_COMPRESSED_RGBA_FXT1_3DFX;
|
||||||
|
*glpixfmt = GL_COMPRESSED_RGBA_FXT1_3DFX;
|
||||||
|
*glpackfmt = GL_COMPRESSED_RGBA_FXT1_3DFX; // XXX: what should we do about GL_COMPRESSED_RGB_FXT1_3DFX?
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
display_warning("grTexFormat2GLPackedFmt : unknown texture format: %x", fmt);
|
||||||
|
}
|
||||||
|
return factor;
|
||||||
|
}
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grTexDownloadMipMap( GrChipID_t tmu,
|
||||||
|
FxU32 startAddress,
|
||||||
|
FxU32 evenOdd,
|
||||||
|
GrTexInfo *info )
|
||||||
|
{
|
||||||
|
int width, height, i, j;
|
||||||
|
int factor;
|
||||||
|
int glformat = 0;
|
||||||
|
int gltexfmt, glpixfmt, glpackfmt;
|
||||||
|
LOG("grTexDownloadMipMap(%d,%d,%d)\r\n", tmu, startAddress, evenOdd);
|
||||||
|
if (info->largeLodLog2 != info->smallLodLog2) display_warning("grTexDownloadMipMap : loading more than one LOD");
|
||||||
|
|
||||||
|
if (info->aspectRatioLog2 < 0)
|
||||||
|
{
|
||||||
|
height = 1 << info->largeLodLog2;
|
||||||
|
width = height >> -info->aspectRatioLog2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
width = 1 << info->largeLodLog2;
|
||||||
|
height = width >> info->aspectRatioLog2;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (!packed_pixels_support)
|
||||||
|
factor = -1;
|
||||||
|
else
|
||||||
|
factor = grTexFormat2GLPackedFmt(info->format, &gltexfmt, &glpixfmt, &glpackfmt);
|
||||||
|
|
||||||
|
if (factor < 0) {
|
||||||
|
|
||||||
|
// VP fixed the texture conversions to be more accurate, also swapped
|
||||||
|
// the for i/j loops so that is is less likely to break the memory cache
|
||||||
|
register int n = 0, m = 0;
|
||||||
|
switch(info->format)
|
||||||
|
{
|
||||||
|
case GR_TEXFMT_ALPHA_8:
|
||||||
|
for (i=0; i<height; i++)
|
||||||
|
{
|
||||||
|
for (j=0; j<width; j++)
|
||||||
|
{
|
||||||
|
unsigned int texel = (unsigned int)((unsigned char*)info->data)[m];
|
||||||
|
texel |= (texel << 8);
|
||||||
|
texel |= (texel << 16);
|
||||||
|
((unsigned int*)texture)[n] = texel;
|
||||||
|
m++;
|
||||||
|
n++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
factor = 1;
|
||||||
|
glformat = GL_INTENSITY8;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_INTENSITY_8: // I8 support - H.Morii
|
||||||
|
for (i=0; i<height; i++)
|
||||||
|
{
|
||||||
|
for (j=0; j<width; j++)
|
||||||
|
{
|
||||||
|
unsigned int texel = (unsigned int)((unsigned char*)info->data)[m];
|
||||||
|
texel |= (0xFF000000 | (texel << 16) | (texel << 8));
|
||||||
|
((unsigned int*)texture)[n] = texel;
|
||||||
|
m++;
|
||||||
|
n++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
factor = 1;
|
||||||
|
glformat = GL_LUMINANCE8;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ALPHA_INTENSITY_44:
|
||||||
|
#if 1
|
||||||
|
for (i=0; i<height; i++)
|
||||||
|
{
|
||||||
|
for (j=0; j<width; j++)
|
||||||
|
{
|
||||||
|
unsigned int texel = (unsigned int)((unsigned char*)info->data)[m];
|
||||||
|
#if 1
|
||||||
|
/* accurate conversion */
|
||||||
|
unsigned int texel_hi = (texel & 0x000000F0) << 20;
|
||||||
|
unsigned int texel_low = texel & 0x0000000F;
|
||||||
|
texel_low |= (texel_low << 4);
|
||||||
|
texel_hi |= ((texel_hi << 4) | (texel_low << 16) | (texel_low << 8) | texel_low);
|
||||||
|
#else
|
||||||
|
unsigned int texel_hi = (texel & 0x000000F0) << 24;
|
||||||
|
unsigned int texel_low = (texel & 0x0000000F) << 4;
|
||||||
|
texel_hi |= ((texel_low << 16) | (texel_low << 8) | texel_low);
|
||||||
|
#endif
|
||||||
|
((unsigned int*)texture)[n] = texel_hi;
|
||||||
|
m++;
|
||||||
|
n++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
factor = 1;
|
||||||
|
glformat = GL_LUMINANCE4_ALPHA4;
|
||||||
|
#endif
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_RGB_565:
|
||||||
|
for (i=0; i<height; i++)
|
||||||
|
{
|
||||||
|
for (j=0; j<width; j++)
|
||||||
|
{
|
||||||
|
unsigned int texel = (unsigned int)((unsigned short*)info->data)[m];
|
||||||
|
unsigned int B = texel & 0x0000F800;
|
||||||
|
unsigned int G = texel & 0x000007E0;
|
||||||
|
unsigned int R = texel & 0x0000001F;
|
||||||
|
#if 0
|
||||||
|
/* accurate conversion */
|
||||||
|
((unsigned int*)texture)[n] = 0xFF000000 | (R << 19) | ((R >> 2) << 16) | (G << 5) | ((G >> 9) << 8) | (B >> 8) | (B >> 13);
|
||||||
|
#else
|
||||||
|
((unsigned int*)texture)[n] = 0xFF000000 | (R << 19) | (G << 5) | (B >> 8);
|
||||||
|
#endif
|
||||||
|
m++;
|
||||||
|
n++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
factor = 2;
|
||||||
|
glformat = GL_RGB;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ARGB_1555:
|
||||||
|
for (i=0; i<height; i++)
|
||||||
|
{
|
||||||
|
for (j=0; j<width; j++)
|
||||||
|
{
|
||||||
|
unsigned int texel = (unsigned int)((unsigned short*)info->data)[m];
|
||||||
|
unsigned int A = texel & 0x00008000 ? 0xFF000000 : 0;
|
||||||
|
unsigned int B = texel & 0x00007C00;
|
||||||
|
unsigned int G = texel & 0x000003E0;
|
||||||
|
unsigned int R = texel & 0x0000001F;
|
||||||
|
#if 0
|
||||||
|
/* accurate conversion */
|
||||||
|
((unsigned int*)texture)[n] = A | (R << 19) | ((R >> 2) << 16) | (G << 6) | ((G >> 8) << 8) | (B >> 7) | (B >> 12);
|
||||||
|
#else
|
||||||
|
((unsigned int*)texture)[n] = A | (R << 19) | (G << 6) | (B >> 7);
|
||||||
|
#endif
|
||||||
|
m++;
|
||||||
|
n++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
factor = 2;
|
||||||
|
glformat = GL_RGB5_A1;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ALPHA_INTENSITY_88:
|
||||||
|
for (i=0; i<height; i++)
|
||||||
|
{
|
||||||
|
for (j=0; j<width; j++)
|
||||||
|
{
|
||||||
|
unsigned int AI = (unsigned int)((unsigned short*)info->data)[m];
|
||||||
|
unsigned int I = (unsigned int)(AI & 0x000000FF);
|
||||||
|
((unsigned int*)texture)[n] = (AI << 16) | (I << 8) | I;
|
||||||
|
m++;
|
||||||
|
n++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
factor = 2;
|
||||||
|
glformat = GL_LUMINANCE8_ALPHA8;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ARGB_4444:
|
||||||
|
|
||||||
|
for (i=0; i<height; i++)
|
||||||
|
{
|
||||||
|
for (j=0; j<width; j++)
|
||||||
|
{
|
||||||
|
unsigned int texel = (unsigned int)((unsigned short*)info->data)[m];
|
||||||
|
unsigned int A = texel & 0x0000F000;
|
||||||
|
unsigned int B = texel & 0x00000F00;
|
||||||
|
unsigned int G = texel & 0x000000F0;
|
||||||
|
unsigned int R = texel & 0x0000000F;
|
||||||
|
#if 0
|
||||||
|
/* accurate conversion */
|
||||||
|
((unsigned int*)texture)[n] = (A << 16) | (A << 12) | (R << 20) | (R << 16) | (G << 8) | (G << 4) | (B >> 4) | (B >> 8);
|
||||||
|
#else
|
||||||
|
((unsigned int*)texture)[n] = (A << 16) | (R << 20) | (G << 8) | (B >> 4);
|
||||||
|
#endif
|
||||||
|
m++;
|
||||||
|
n++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
factor = 2;
|
||||||
|
glformat = GL_RGBA4;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ARGB_8888:
|
||||||
|
for (i=0; i<height; i++)
|
||||||
|
{
|
||||||
|
for (j=0; j<width; j++)
|
||||||
|
{
|
||||||
|
unsigned int texel = ((unsigned int*)info->data)[m];
|
||||||
|
unsigned int A = texel & 0xFF000000;
|
||||||
|
unsigned int B = texel & 0x00FF0000;
|
||||||
|
unsigned int G = texel & 0x0000FF00;
|
||||||
|
unsigned int R = texel & 0x000000FF;
|
||||||
|
((unsigned int*)texture)[n] = A | (R << 16) | G | (B >> 16);
|
||||||
|
m++;
|
||||||
|
n++;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
factor = 4;
|
||||||
|
glformat = GL_RGBA8;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ARGB_CMP_DXT1: // FXT1,DXT1,5 support - H.Morii
|
||||||
|
factor = 8; // HACKALERT: factor holds block bytes
|
||||||
|
glformat = GL_COMPRESSED_RGB_S3TC_DXT1_EXT;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ARGB_CMP_DXT3: // FXT1,DXT1,5 support - H.Morii
|
||||||
|
factor = 16; // HACKALERT: factor holds block bytes
|
||||||
|
glformat = GL_COMPRESSED_RGBA_S3TC_DXT3_EXT;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ARGB_CMP_DXT5:
|
||||||
|
factor = 16;
|
||||||
|
glformat = GL_COMPRESSED_RGBA_S3TC_DXT5_EXT;
|
||||||
|
break;
|
||||||
|
case GR_TEXFMT_ARGB_CMP_FXT1:
|
||||||
|
factor = 8;
|
||||||
|
glformat = GL_COMPRESSED_RGBA_FXT1_3DFX;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
display_warning("grTexDownloadMipMap : unknown texture format: %x", info->format);
|
||||||
|
factor = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nbTextureUnits <= 2)
|
||||||
|
glActiveTextureARB(GL_TEXTURE1_ARB);
|
||||||
|
else
|
||||||
|
glActiveTextureARB(GL_TEXTURE2_ARB);
|
||||||
|
|
||||||
|
switch(info->format)
|
||||||
|
{
|
||||||
|
case GR_TEXFMT_ARGB_CMP_DXT1:
|
||||||
|
case GR_TEXFMT_ARGB_CMP_DXT3:
|
||||||
|
case GR_TEXFMT_ARGB_CMP_DXT5:
|
||||||
|
case GR_TEXFMT_ARGB_CMP_FXT1:
|
||||||
|
remove_tex(startAddress+1, startAddress+1+((width*height*factor)>>4));
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
remove_tex(startAddress+1, startAddress+1+(width*height*factor));
|
||||||
|
}
|
||||||
|
|
||||||
|
add_tex(startAddress+1);
|
||||||
|
glBindTexture(GL_TEXTURE_2D, startAddress+1);
|
||||||
|
|
||||||
|
if (largest_supported_anisotropy > 1.0f)
|
||||||
|
glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAX_ANISOTROPY_EXT, largest_supported_anisotropy);
|
||||||
|
|
||||||
|
switch(info->format)
|
||||||
|
{
|
||||||
|
case GR_TEXFMT_ARGB_CMP_DXT1:
|
||||||
|
case GR_TEXFMT_ARGB_CMP_DXT3:
|
||||||
|
case GR_TEXFMT_ARGB_CMP_DXT5:
|
||||||
|
case GR_TEXFMT_ARGB_CMP_FXT1:
|
||||||
|
glCompressedTexImage2DARB(GL_TEXTURE_2D, 0, (glformat ? glformat : gltexfmt), width, height, 0, (width*height*factor)>>4, info->data);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
if (glformat) {
|
||||||
|
glTexImage2D(GL_TEXTURE_2D, 0, glformat, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, texture);
|
||||||
|
} else
|
||||||
|
glTexImage2D(GL_TEXTURE_2D, 0, gltexfmt, width, height, 0, glpixfmt, glpackfmt, info->data);
|
||||||
|
}
|
||||||
|
|
||||||
|
glBindTexture(GL_TEXTURE_2D, default_texture);
|
||||||
|
}
|
||||||
|
|
||||||
|
int CheckTextureBufferFormat(GrChipID_t tmu, FxU32 startAddress, GrTexInfo *info );
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grTexSource( GrChipID_t tmu,
|
||||||
|
FxU32 startAddress,
|
||||||
|
FxU32 evenOdd,
|
||||||
|
GrTexInfo *info )
|
||||||
|
{
|
||||||
|
LOG("grTexSource(%d,%d,%d)\r\n", tmu, startAddress, evenOdd);
|
||||||
|
|
||||||
|
if (tmu == GR_TMU1 || nbTextureUnits <= 2)
|
||||||
|
{
|
||||||
|
if (tmu == GR_TMU1 && nbTextureUnits <= 2) return;
|
||||||
|
glActiveTextureARB(GL_TEXTURE0_ARB);
|
||||||
|
|
||||||
|
if (info->aspectRatioLog2 < 0)
|
||||||
|
{
|
||||||
|
tex0_height = 256;
|
||||||
|
tex0_width = tex0_height >> -info->aspectRatioLog2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tex0_width = 256;
|
||||||
|
tex0_height = tex0_width >> info->aspectRatioLog2;
|
||||||
|
}
|
||||||
|
|
||||||
|
glBindTexture(GL_TEXTURE_2D, startAddress+1);
|
||||||
|
#ifdef VPDEBUG
|
||||||
|
dump_tex(startAddress+1);
|
||||||
|
#endif
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min_filter0);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag_filter0);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap_s0);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap_t0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
glActiveTextureARB(GL_TEXTURE1_ARB);
|
||||||
|
|
||||||
|
if (info->aspectRatioLog2 < 0)
|
||||||
|
{
|
||||||
|
tex1_height = 256;
|
||||||
|
tex1_width = tex1_height >> -info->aspectRatioLog2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
tex1_width = 256;
|
||||||
|
tex1_height = tex1_width >> info->aspectRatioLog2;
|
||||||
|
}
|
||||||
|
|
||||||
|
glBindTexture(GL_TEXTURE_2D, startAddress+1);
|
||||||
|
#ifdef VPDEBUG
|
||||||
|
dump_tex(startAddress+1);
|
||||||
|
#endif
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min_filter1);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag_filter1);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap_s1);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap_t1);
|
||||||
|
}
|
||||||
|
if(!CheckTextureBufferFormat(tmu, startAddress+1, info))
|
||||||
|
{
|
||||||
|
if(tmu == 0 && blackandwhite1 != 0)
|
||||||
|
{
|
||||||
|
blackandwhite1 = 0;
|
||||||
|
need_to_compile = 1;
|
||||||
|
}
|
||||||
|
if(tmu == 1 && blackandwhite0 != 0)
|
||||||
|
{
|
||||||
|
blackandwhite0 = 0;
|
||||||
|
need_to_compile = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
extern int auxbuffer;
|
||||||
|
static int oldbuffer;
|
||||||
|
FX_ENTRY void FX_CALL grAuxBufferExt( GrBuffer_t buffer );
|
||||||
|
if (auxbuffer == GR_BUFFER_AUXBUFFER && auxbuffer != oldbuffer)
|
||||||
|
grAuxBufferExt(auxbuffer);
|
||||||
|
oldbuffer = auxbuffer;
|
||||||
|
#endif
|
||||||
|
}
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grTexDetailControl(
|
||||||
|
GrChipID_t tmu,
|
||||||
|
int lod_bias,
|
||||||
|
FxU8 detail_scale,
|
||||||
|
float detail_max
|
||||||
|
)
|
||||||
|
{
|
||||||
|
LOG("grTexDetailControl(%d,%d,%d,%d)\r\n", tmu, lod_bias, detail_scale, detail_max);
|
||||||
|
if (lod_bias != 31 && detail_scale != 7)
|
||||||
|
{
|
||||||
|
if (!lod_bias && !detail_scale && !detail_max) return;
|
||||||
|
else
|
||||||
|
display_warning("grTexDetailControl : %d, %d, %f", lod_bias, detail_scale, detail_max);
|
||||||
|
}
|
||||||
|
lambda = detail_max;
|
||||||
|
if(lambda > 1.0f)
|
||||||
|
{
|
||||||
|
lambda = 1.0f - (255.0f - lambda);
|
||||||
|
}
|
||||||
|
if(lambda > 1.0f) display_warning("lambda:%f", lambda);
|
||||||
|
|
||||||
|
set_lambda();
|
||||||
|
}
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grTexLodBiasValue(GrChipID_t tmu, float bias )
|
||||||
|
{
|
||||||
|
LOG("grTexLodBiasValue(%d,%f)\r\n", tmu, bias);
|
||||||
|
}
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grTexFilterMode(
|
||||||
|
GrChipID_t tmu,
|
||||||
|
GrTextureFilterMode_t minfilter_mode,
|
||||||
|
GrTextureFilterMode_t magfilter_mode
|
||||||
|
)
|
||||||
|
{
|
||||||
|
LOG("grTexFilterMode(%d,%d,%d)\r\n", tmu, minfilter_mode, magfilter_mode);
|
||||||
|
if (tmu == GR_TMU1 || nbTextureUnits <= 2)
|
||||||
|
{
|
||||||
|
if (tmu == GR_TMU1 && nbTextureUnits <= 2) return;
|
||||||
|
if (minfilter_mode == GR_TEXTUREFILTER_POINT_SAMPLED) min_filter0 = GL_NEAREST;
|
||||||
|
else min_filter0 = GL_LINEAR;
|
||||||
|
|
||||||
|
if (magfilter_mode == GR_TEXTUREFILTER_POINT_SAMPLED) mag_filter0 = GL_NEAREST;
|
||||||
|
else mag_filter0 = GL_LINEAR;
|
||||||
|
|
||||||
|
glActiveTextureARB(GL_TEXTURE0_ARB);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min_filter0);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag_filter0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
if (minfilter_mode == GR_TEXTUREFILTER_POINT_SAMPLED) min_filter1 = GL_NEAREST;
|
||||||
|
else min_filter1 = GL_LINEAR;
|
||||||
|
|
||||||
|
if (magfilter_mode == GR_TEXTUREFILTER_POINT_SAMPLED) mag_filter1 = GL_NEAREST;
|
||||||
|
else mag_filter1 = GL_LINEAR;
|
||||||
|
|
||||||
|
glActiveTextureARB(GL_TEXTURE1_ARB);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, min_filter1);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, mag_filter1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
FX_ENTRY void FX_CALL
|
||||||
|
grTexClampMode(
|
||||||
|
GrChipID_t tmu,
|
||||||
|
GrTextureClampMode_t s_clampmode,
|
||||||
|
GrTextureClampMode_t t_clampmode
|
||||||
|
)
|
||||||
|
{
|
||||||
|
LOG("grTexClampMode(%d, %d, %d)\r\n", tmu, s_clampmode, t_clampmode);
|
||||||
|
if (tmu == GR_TMU1 || nbTextureUnits <= 2)
|
||||||
|
{
|
||||||
|
if (tmu == GR_TMU1 && nbTextureUnits <= 2) return;
|
||||||
|
switch(s_clampmode)
|
||||||
|
{
|
||||||
|
case GR_TEXTURECLAMP_WRAP:
|
||||||
|
wrap_s0 = GL_REPEAT;
|
||||||
|
break;
|
||||||
|
case GR_TEXTURECLAMP_CLAMP:
|
||||||
|
wrap_s0 = GL_CLAMP_TO_EDGE;
|
||||||
|
break;
|
||||||
|
case GR_TEXTURECLAMP_MIRROR_EXT:
|
||||||
|
wrap_s0 = GL_MIRRORED_REPEAT_ARB;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
display_warning("grTexClampMode : unknown s_clampmode : %x", s_clampmode);
|
||||||
|
}
|
||||||
|
switch(t_clampmode)
|
||||||
|
{
|
||||||
|
case GR_TEXTURECLAMP_WRAP:
|
||||||
|
wrap_t0 = GL_REPEAT;
|
||||||
|
break;
|
||||||
|
case GR_TEXTURECLAMP_CLAMP:
|
||||||
|
wrap_t0 = GL_CLAMP_TO_EDGE;
|
||||||
|
break;
|
||||||
|
case GR_TEXTURECLAMP_MIRROR_EXT:
|
||||||
|
wrap_t0 = GL_MIRRORED_REPEAT_ARB;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
display_warning("grTexClampMode : unknown t_clampmode : %x", t_clampmode);
|
||||||
|
}
|
||||||
|
glActiveTextureARB(GL_TEXTURE0_ARB);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap_s0);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap_t0);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
switch(s_clampmode)
|
||||||
|
{
|
||||||
|
case GR_TEXTURECLAMP_WRAP:
|
||||||
|
wrap_s1 = GL_REPEAT;
|
||||||
|
break;
|
||||||
|
case GR_TEXTURECLAMP_CLAMP:
|
||||||
|
wrap_s1 = GL_CLAMP_TO_EDGE;
|
||||||
|
break;
|
||||||
|
case GR_TEXTURECLAMP_MIRROR_EXT:
|
||||||
|
wrap_s1 = GL_MIRRORED_REPEAT_ARB;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
display_warning("grTexClampMode : unknown s_clampmode : %x", s_clampmode);
|
||||||
|
}
|
||||||
|
switch(t_clampmode)
|
||||||
|
{
|
||||||
|
case GR_TEXTURECLAMP_WRAP:
|
||||||
|
wrap_t1 = GL_REPEAT;
|
||||||
|
break;
|
||||||
|
case GR_TEXTURECLAMP_CLAMP:
|
||||||
|
wrap_t1 = GL_CLAMP_TO_EDGE;
|
||||||
|
break;
|
||||||
|
case GR_TEXTURECLAMP_MIRROR_EXT:
|
||||||
|
wrap_t1 = GL_MIRRORED_REPEAT_ARB;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
display_warning("grTexClampMode : unknown t_clampmode : %x", t_clampmode);
|
||||||
|
}
|
||||||
|
glActiveTextureARB(GL_TEXTURE1_ARB);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, wrap_s1);
|
||||||
|
glTexParameteri(GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, wrap_t1);
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,114 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
|
#ifdef _WIN32 //Windows, duh!
|
||||||
|
#include <objbase.h>
|
||||||
|
#include "dxdiag.h"
|
||||||
|
#include "main.h"
|
||||||
|
#pragma comment(lib, "ole32.lib")
|
||||||
|
#pragma comment(lib, "dxguid.lib")
|
||||||
|
#define SAFE_RELEASE(x) { if (x != NULL) { x->Release(); x = NULL; } }
|
||||||
|
|
||||||
|
IDxDiagProvider* Provider;
|
||||||
|
IDxDiagContainer* RootContainer;
|
||||||
|
bool ComInitialized;
|
||||||
|
|
||||||
|
static void InitCom()
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
Provider = NULL;
|
||||||
|
RootContainer = NULL;
|
||||||
|
|
||||||
|
// Init COM
|
||||||
|
ComInitialized = SUCCEEDED(CoInitialize(NULL));
|
||||||
|
|
||||||
|
// Create a provider interface
|
||||||
|
if (FAILED(CoCreateInstance(CLSID_DxDiagProvider, NULL, CLSCTX_INPROC_SERVER, IID_IDxDiagProvider, (void**)&Provider)))
|
||||||
|
throw "Unable to create provider instance";
|
||||||
|
|
||||||
|
// Initialize the provider
|
||||||
|
DXDIAG_INIT_PARAMS initParams;
|
||||||
|
ZeroMemory(&initParams, sizeof(DXDIAG_INIT_PARAMS));
|
||||||
|
initParams.dwSize = sizeof(DXDIAG_INIT_PARAMS);
|
||||||
|
initParams.dwDxDiagHeaderVersion = DXDIAG_DX9_SDK_VERSION;
|
||||||
|
if (FAILED(Provider->Initialize(&initParams)))
|
||||||
|
throw "Unable to initialize provider";
|
||||||
|
|
||||||
|
// Get the root container
|
||||||
|
if (FAILED(Provider->GetRootContainer(&RootContainer)))
|
||||||
|
throw "Unable to get root container";
|
||||||
|
}
|
||||||
|
catch (const char* msg)
|
||||||
|
{
|
||||||
|
LOG("\nDxDiag Error: %s", msg);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static IDxDiagContainer* GetContainer(IDxDiagContainer* parent, const WCHAR* name)
|
||||||
|
{
|
||||||
|
IDxDiagContainer* container;
|
||||||
|
if (SUCCEEDED(parent->GetChildContainer(name, &container)))
|
||||||
|
return container;
|
||||||
|
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
static void GetPropertyValue(IDxDiagContainer* container, const WCHAR* name, WCHAR* value, int maxValueLen)
|
||||||
|
{
|
||||||
|
VARIANT var;
|
||||||
|
VariantInit(&var);
|
||||||
|
if (SUCCEEDED(container->GetProp(name, &var)))
|
||||||
|
{
|
||||||
|
// Assuming an integer or bstring value here
|
||||||
|
// @@ Handle all the VT_* types properly...
|
||||||
|
if (var.vt != VT_BSTR)
|
||||||
|
wsprintf((LPSTR)value, "%i", var.iVal);
|
||||||
|
else
|
||||||
|
wcsncpy(value, var.bstrVal, maxValueLen - 1);
|
||||||
|
|
||||||
|
value[maxValueLen - 1] = 0;
|
||||||
|
VariantClear(&var);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
value[0] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
static int GetTotalVideoMemory()
|
||||||
|
{
|
||||||
|
if (RootContainer != NULL)
|
||||||
|
{
|
||||||
|
// Get device container
|
||||||
|
IDxDiagContainer* container = GetContainer(RootContainer, L"DxDiag_DisplayDevices");
|
||||||
|
if (container != NULL)
|
||||||
|
{
|
||||||
|
// Get device name
|
||||||
|
container = GetContainer(container, L"0");
|
||||||
|
if (container != NULL)
|
||||||
|
{
|
||||||
|
const int bufferLength = 256;
|
||||||
|
WCHAR buffer[bufferLength];
|
||||||
|
GetPropertyValue(container, L"szDisplayMemoryLocalized", buffer, bufferLength);
|
||||||
|
// Value in MB is first token in string
|
||||||
|
return _wtoi(buffer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// No good!
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int getVRAMSize()
|
||||||
|
{
|
||||||
|
static int mem;
|
||||||
|
if (!mem) {
|
||||||
|
InitCom();
|
||||||
|
mem = GetTotalVideoMemory();
|
||||||
|
}
|
||||||
|
return mem * 1024 * 1024;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue