Merge branch 'master' of https://github.com/Cxbx-Reloaded/Cxbx-Reloaded into various-bug-fixes

# Conflicts:
#	src/CxbxKrnl/CxbxKrnl.cpp
#	src/CxbxKrnl/EmuD3D8.cpp
This commit is contained in:
Luke Usher 2017-01-05 20:40:26 +00:00
commit ab755489c2
49 changed files with 30695 additions and 2402 deletions

View File

@ -80,7 +80,7 @@
<ClCompile> <ClCompile>
<Optimization>MaxSpeed</Optimization> <Optimization>MaxSpeed</Optimization>
<InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion> <InlineFunctionExpansion>OnlyExplicitInline</InlineFunctionExpansion>
<AdditionalIncludeDirectories>..\..\import\OpenXDK;..\..\import\zydis\Zydis;..\..\src;..\..\src\Common;..\..\src\Common\Win32;..\..\import\OpenXDK\include;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\..\src\Common;..\..\import\OpenXDK\include;..\..\import\zydis\Zydis;..\..\import\glew-2.0.0\include;..\..\src;..\..\src\Common\Win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;CXBXKRNL_EXPORTS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;NDEBUG;_WINDOWS;_USRDLL;CXBXKRNL_EXPORTS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<StringPooling>true</StringPooling> <StringPooling>true</StringPooling>
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary> <RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
@ -103,7 +103,7 @@
<TargetMachine>MachineX86</TargetMachine> <TargetMachine>MachineX86</TargetMachine>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers> <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
<LargeAddressAware>false</LargeAddressAware> <LargeAddressAware>false</LargeAddressAware>
<AdditionalLibraryDirectories>..\..\import\zydis\Build\$(Configuration)\</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>..\..\import\zydis\Build\$(Configuration)\;..\..\import\glew-2.0.0\lib\Release\Win32\</AdditionalLibraryDirectories>
</Link> </Link>
<Bscmake> <Bscmake>
<SuppressStartupBanner>true</SuppressStartupBanner> <SuppressStartupBanner>true</SuppressStartupBanner>
@ -141,7 +141,7 @@
</Midl> </Midl>
<ClCompile> <ClCompile>
<Optimization>Disabled</Optimization> <Optimization>Disabled</Optimization>
<AdditionalIncludeDirectories>..\..\src\Common;..\..\import\zydis\Zydis;..\..\import\OpenXDK\include;..\..\src;..\..\src\Common\Win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories> <AdditionalIncludeDirectories>..\..\src\Common;..\..\import\OpenXDK\include;..\..\import\zydis\Zydis;..\..\import\glew-2.0.0\include;..\..\src;..\..\src\Common\Win32;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
<PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;CXBXKRNL_EXPORTS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions> <PreprocessorDefinitions>WIN32;_DEBUG;_WINDOWS;_USRDLL;CXBXKRNL_EXPORTS;_CRT_SECURE_NO_WARNINGS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<MinimalRebuild>true</MinimalRebuild> <MinimalRebuild>true</MinimalRebuild>
<BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks> <BasicRuntimeChecks>EnableFastChecks</BasicRuntimeChecks>
@ -168,7 +168,7 @@
<TargetMachine>MachineX86</TargetMachine> <TargetMachine>MachineX86</TargetMachine>
<ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers> <ImageHasSafeExceptionHandlers>false</ImageHasSafeExceptionHandlers>
<LargeAddressAware>false</LargeAddressAware> <LargeAddressAware>false</LargeAddressAware>
<AdditionalLibraryDirectories>..\..\import\zydis\Build\$(Configuration)\</AdditionalLibraryDirectories> <AdditionalLibraryDirectories>..\..\import\zydis\Build\$(Configuration)\;..\..\import\glew-2.0.0\lib\Release\Win32\</AdditionalLibraryDirectories>
</Link> </Link>
<Bscmake> <Bscmake>
<SuppressStartupBanner>true</SuppressStartupBanner> <SuppressStartupBanner>true</SuppressStartupBanner>

View File

@ -12,29 +12,41 @@
#ifndef KERNEL_H #ifndef KERNEL_H
#define KERNEL_H #define KERNEL_H
// ******************************************************************
// * 0x005C - KeAlertResumeThread()
// ******************************************************************
XBSYSAPI EXPORTNUM(92) NTSTATUS NTAPI KeAlertResumeThread XBSYSAPI EXPORTNUM(92) NTSTATUS NTAPI KeAlertResumeThread
( (
IN HANDLE ThreadHandle, IN HANDLE ThreadHandle,
IN OUT PULONG PreviousSuspendCount IN OUT PULONG PreviousSuspendCount
); );
// ******************************************************************
// * 0x005D - KeAlertThread()
// ******************************************************************
XBSYSAPI EXPORTNUM(93) NTSTATUS NTAPI KeAlertThread XBSYSAPI EXPORTNUM(93) NTSTATUS NTAPI KeAlertThread
( (
IN HANDLE ThreadHandle IN HANDLE ThreadHandle
); );
// ******************************************************************
// * 0x005E - KeBoostPriorityThread()
// ******************************************************************
XBSYSAPI EXPORTNUM(94) NTSTATUS NTAPI KeBoostPriorityThread XBSYSAPI EXPORTNUM(94) NTSTATUS NTAPI KeBoostPriorityThread
( (
); );
// ****************************************************************** // ******************************************************************
// * KeBugCheck // * 0x005F - KeBugCheck()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(95) VOID NTAPI KeBugCheck XBSYSAPI EXPORTNUM(95) VOID NTAPI KeBugCheck
( (
IN ULONG BugCheckMode IN ULONG BugCheckMode
); );
// ******************************************************************
// * 0x0060 - KeBugCheckEx()
// ******************************************************************
XBSYSAPI EXPORTNUM(96) NTSTATUS NTAPI KeBugCheckEx XBSYSAPI EXPORTNUM(96) NTSTATUS NTAPI KeBugCheckEx
( (
IN DWORD BugCheckCode, IN DWORD BugCheckCode,
@ -44,21 +56,24 @@ XBSYSAPI EXPORTNUM(96) NTSTATUS NTAPI KeBugCheckEx
IN PVOID BugCheckParameter4 IN PVOID BugCheckParameter4
); );
// ******************************************************************
// * 0x0061 - KeCancelTimer()
// ******************************************************************
XBSYSAPI EXPORTNUM(97) BOOLEAN NTAPI KeCancelTimer XBSYSAPI EXPORTNUM(97) BOOLEAN NTAPI KeCancelTimer
( (
IN PKTIMER IN PKTIMER
); );
// ****************************************************************** // ******************************************************************
// * KeConnectInterrupt // * 0x0062 - KeConnectInterrupt()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(98) LONG NTAPI KeConnectInterrupt XBSYSAPI EXPORTNUM(98) BOOLEAN NTAPI KeConnectInterrupt
( (
IN PKINTERRUPT InterruptObject IN PKINTERRUPT InterruptObject
); );
// ****************************************************************** // ******************************************************************
// * KeDelayExecutionThread // * 0x0063 - KeDelayExecutionThread()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(99) NTSTATUS NTAPI KeDelayExecutionThread XBSYSAPI EXPORTNUM(99) NTSTATUS NTAPI KeDelayExecutionThread
( (
@ -68,7 +83,7 @@ XBSYSAPI EXPORTNUM(99) NTSTATUS NTAPI KeDelayExecutionThread
); );
// ****************************************************************** // ******************************************************************
// * KeDisconnectInterrupt // * 0x0064 - KeDisconnectInterrupt()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(100) VOID NTAPI KeDisconnectInterrupt XBSYSAPI EXPORTNUM(100) VOID NTAPI KeDisconnectInterrupt
( (
@ -89,7 +104,7 @@ XBSYSAPI EXPORTNUM(101) VOID NTAPI KeEnterCriticalRegion
XBSYSAPI EXPORTNUM(103) KIRQL NTAPI KeGetCurrentIrql(void); XBSYSAPI EXPORTNUM(103) KIRQL NTAPI KeGetCurrentIrql(void);
// ****************************************************************** // ******************************************************************
// * KeGetCurrentThread // * 0x0068 - KeGetCurrentThread()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(104) PKTHREAD NTAPI KeGetCurrentThread(void); XBSYSAPI EXPORTNUM(104) PKTHREAD NTAPI KeGetCurrentThread(void);
@ -97,7 +112,7 @@ XBSYSAPI VOID *KeInitializeApc;
XBSYSAPI VOID *KeInitializeDeviceQueue; XBSYSAPI VOID *KeInitializeDeviceQueue;
// ****************************************************************** // ******************************************************************
// * KeInitializeDpc // * 0x006B - KeInitializeDpc()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(107) VOID NTAPI KeInitializeDpc XBSYSAPI EXPORTNUM(107) VOID NTAPI KeInitializeDpc
( (
@ -109,7 +124,7 @@ XBSYSAPI EXPORTNUM(107) VOID NTAPI KeInitializeDpc
XBSYSAPI VOID *KeInitializeEvent; XBSYSAPI VOID *KeInitializeEvent;
// ****************************************************************** // ******************************************************************
// * KeInitializeInterrupt // * 0x006D - KeInitializeInterrupt()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(109) VOID NTAPI KeInitializeInterrupt XBSYSAPI EXPORTNUM(109) VOID NTAPI KeInitializeInterrupt
( (
@ -128,7 +143,7 @@ XBSYSAPI VOID *KeInitializeQueue;
XBSYSAPI VOID *KeInitializeSemaphore; XBSYSAPI VOID *KeInitializeSemaphore;
// ****************************************************************** // ******************************************************************
// * KeInitializeTimerEx // * 0x0071 - KeInitializeTimerEx()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(113) VOID NTAPI KeInitializeTimerEx XBSYSAPI EXPORTNUM(113) VOID NTAPI KeInitializeTimerEx
( (
@ -143,7 +158,7 @@ XBSYSAPI VOID *KeInsertQueue;
XBSYSAPI VOID *KeInsertQueueApc; XBSYSAPI VOID *KeInsertQueueApc;
// ****************************************************************** // ******************************************************************
// * KeInsertQueueDpc // * 0x0077 - KeInsertQueueDpc()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(119) BOOLEAN NTAPI KeInsertQueueDpc XBSYSAPI EXPORTNUM(119) BOOLEAN NTAPI KeInsertQueueDpc
( (
@ -167,22 +182,22 @@ XBSYSAPI VOID *KePulseEvent;
XBSYSAPI VOID *KeQueryBasePriorityThread; XBSYSAPI VOID *KeQueryBasePriorityThread;
// ****************************************************************** // ******************************************************************
// * KeQueryInterruptTime // * 0x007D - KeQueryInterruptTime()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(125) ULONGLONG NTAPI KeQueryInterruptTime(void); XBSYSAPI EXPORTNUM(125) ULONGLONG NTAPI KeQueryInterruptTime(void);
// ****************************************************************** // ******************************************************************
// * KeQueryPerformanceCounter // * 0x007E - KeQueryPerformanceCounter()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(126) ULONGLONG NTAPI KeQueryPerformanceCounter(void); XBSYSAPI EXPORTNUM(126) ULONGLONG NTAPI KeQueryPerformanceCounter(void);
// ****************************************************************** // ******************************************************************
// * KeQueryPerformanceFrequency // * 0x007F - KeQueryPerformanceFrequency()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(127) ULONGLONG NTAPI KeQueryPerformanceFrequency(void); XBSYSAPI EXPORTNUM(127) ULONGLONG NTAPI KeQueryPerformanceFrequency(void);
// ****************************************************************** // ******************************************************************
// * KeQuerySystemTime // * 0x0080 - KeQuerySystemTime()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(128) VOID NTAPI KeQuerySystemTime XBSYSAPI EXPORTNUM(128) VOID NTAPI KeQuerySystemTime
( (
@ -190,7 +205,7 @@ XBSYSAPI EXPORTNUM(128) VOID NTAPI KeQuerySystemTime
); );
// ****************************************************************** // ******************************************************************
// * KeRaiseIrqlToDpcLevel // * 0x0081 - KeRaiseIrqlToDpcLevel()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(129) UCHAR NTAPI KeRaiseIrqlToDpcLevel(); XBSYSAPI EXPORTNUM(129) UCHAR NTAPI KeRaiseIrqlToDpcLevel();
@ -209,7 +224,7 @@ XBSYSAPI VOID *KeRundownQueue;
XBSYSAPI VOID *KeSaveFloatingPointState; XBSYSAPI VOID *KeSaveFloatingPointState;
// ****************************************************************** // ******************************************************************
// * 0x008F - KeSetBasePriorityThread // * 0x008F - KeSetBasePriorityThread()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(143) LONG NTAPI KeSetBasePriorityThread XBSYSAPI EXPORTNUM(143) LONG NTAPI KeSetBasePriorityThread
( (
@ -232,7 +247,9 @@ XBSYSAPI EXPORTNUM(145) LONG NTAPI KeSetEvent
XBSYSAPI VOID *KeSetEventBoostPriority; XBSYSAPI VOID *KeSetEventBoostPriority;
XBSYSAPI VOID *KeSetPriorityProcess; XBSYSAPI VOID *KeSetPriorityProcess;
//XBSYSAPI VOID *KeSetPriorityThread; // ******************************************************************
// * 0x0094 - KeSetPriorityThread()
// ******************************************************************
XBSYSAPI EXPORTNUM(148) BOOLEAN NTAPI KeSetPriorityThread XBSYSAPI EXPORTNUM(148) BOOLEAN NTAPI KeSetPriorityThread
( (
IN PKTHREAD Thread, IN PKTHREAD Thread,
@ -240,7 +257,7 @@ XBSYSAPI EXPORTNUM(148) BOOLEAN NTAPI KeSetPriorityThread
); );
// ****************************************************************** // ******************************************************************
// * KeSetTimer // * 0x0095 - KeSetTimer()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(149) BOOLEAN NTAPI KeSetTimer XBSYSAPI EXPORTNUM(149) BOOLEAN NTAPI KeSetTimer
( (
@ -250,7 +267,7 @@ XBSYSAPI EXPORTNUM(149) BOOLEAN NTAPI KeSetTimer
); );
// ****************************************************************** // ******************************************************************
// * KeSetTimerEx // * 0x0096 - KeSetTimerEx()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(150) BOOLEAN NTAPI KeSetTimerEx XBSYSAPI EXPORTNUM(150) BOOLEAN NTAPI KeSetTimerEx
( (
@ -261,7 +278,7 @@ XBSYSAPI EXPORTNUM(150) BOOLEAN NTAPI KeSetTimerEx
); );
// ****************************************************************** // ******************************************************************
// * KeStallExecutionProcessor // * 0x0097 - KeStallExecutionProcessor()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(151) VOID NTAPI KeStallExecutionProcessor XBSYSAPI EXPORTNUM(151) VOID NTAPI KeStallExecutionProcessor
( (
@ -274,12 +291,18 @@ XBSYSAPI VOID *KeSystemTime;
XBSYSAPI VOID *KeTestAlertThread; XBSYSAPI VOID *KeTestAlertThread;
// ****************************************************************** // ******************************************************************
// * KeTickCount // * 0x009C - KeTickCount
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(156) volatile DWORD KeTickCount; XBSYSAPI EXPORTNUM(156) volatile DWORD KeTickCount;
// ******************************************************************
// * 0x009D - KeTimeIncrement
// ******************************************************************
XBSYSAPI EXPORTNUM(157) ULONG KeTimeIncrement; XBSYSAPI EXPORTNUM(157) ULONG KeTimeIncrement;
// ******************************************************************
// * 0x009E - KeWaitForMultipleObjects()
// ******************************************************************
XBSYSAPI EXPORTNUM(158) NTSTATUS KeWaitForMultipleObjects XBSYSAPI EXPORTNUM(158) NTSTATUS KeWaitForMultipleObjects
( (
IN ULONG Count, IN ULONG Count,
@ -292,6 +315,9 @@ XBSYSAPI EXPORTNUM(158) NTSTATUS KeWaitForMultipleObjects
IN PKWAIT_BLOCK WaitBlockArray OPTIONAL IN PKWAIT_BLOCK WaitBlockArray OPTIONAL
); );
// ******************************************************************
// * 0x009F - KeWaitForSingleObject()
// ******************************************************************
XBSYSAPI EXPORTNUM(159) NTSTATUS KeWaitForSingleObject XBSYSAPI EXPORTNUM(159) NTSTATUS KeWaitForSingleObject
( (
IN PVOID Object, IN PVOID Object,

View File

@ -48,8 +48,8 @@ XBSYSAPI EXPORTNUM(263) NTSTATUS NTAPI RtlAppendUnicodeToString
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(264) VOID NTAPI RtlAssert XBSYSAPI EXPORTNUM(264) VOID NTAPI RtlAssert
( (
PVOID FailedAssertion, PCHAR FailedAssertion,
PVOID FileName, PCHAR FileName,
ULONG LineNumber, ULONG LineNumber,
PCHAR Message PCHAR Message
); );

View File

@ -31,12 +31,12 @@
#define AV_QUERY_AV_CAPABILITIES 6 #define AV_QUERY_AV_CAPABILITIES 6
// ****************************************************************** // ******************************************************************
// * AvGetSavedDataAddress // * 0x0001 - AvGetSavedDataAddress()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(1) PVOID NTAPI AvGetSavedDataAddress(void); XBSYSAPI EXPORTNUM(1) PVOID NTAPI AvGetSavedDataAddress(void);
// ****************************************************************** // ******************************************************************
// * AvSendTVEncoderOption // * 0x0002 - AvSendTVEncoderOption()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(2) VOID NTAPI AvSendTVEncoderOption XBSYSAPI EXPORTNUM(2) VOID NTAPI AvSendTVEncoderOption
( (
@ -47,7 +47,7 @@ XBSYSAPI EXPORTNUM(2) VOID NTAPI AvSendTVEncoderOption
); );
// ****************************************************************** // ******************************************************************
// * AvSetDisplayMode // * 0x0003 - AvSetDisplayMode()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(3) ULONG NTAPI AvSetDisplayMode XBSYSAPI EXPORTNUM(3) ULONG NTAPI AvSetDisplayMode
( (
@ -60,7 +60,7 @@ XBSYSAPI EXPORTNUM(3) ULONG NTAPI AvSetDisplayMode
); );
// ****************************************************************** // ******************************************************************
// * AvSetSavedDataAddress // * 0x0004 - AvSetSavedDataAddress()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(4) VOID NTAPI AvSetSavedDataAddress XBSYSAPI EXPORTNUM(4) VOID NTAPI AvSetSavedDataAddress
( (
@ -68,25 +68,35 @@ XBSYSAPI EXPORTNUM(4) VOID NTAPI AvSetSavedDataAddress
); );
// ****************************************************************** // ******************************************************************
// * FscGetCacheSize // * 0x0023 - FscGetCacheSize()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(35) ULONG NTAPI FscGetCacheSize(); XBSYSAPI EXPORTNUM(35) ULONG NTAPI FscGetCacheSize();
// ******************************************************************
// * 0x0024 - FscInvalidateIdleBlocks()
// ******************************************************************
XBSYSAPI EXPORTNUM(36) VOID NTAPI FscInvalidateIdleBlocks(); XBSYSAPI EXPORTNUM(36) VOID NTAPI FscInvalidateIdleBlocks();
// ****************************************************************** // ******************************************************************
// * FscSetCacheSize // * 0x0025 - FscSetCacheSize()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(37) NTSTATUS NTAPI FscSetCacheSize XBSYSAPI EXPORTNUM(37) NTSTATUS NTAPI FscSetCacheSize
( (
ULONG NumberOfCachePages ULONG NumberOfCachePages
); );
// ******************************************************************
// * 0x0058 - KdDebuggerEnabled
// ******************************************************************
XBSYSAPI EXPORTNUM(88) BOOLEAN KdDebuggerEnabled; XBSYSAPI EXPORTNUM(88) BOOLEAN KdDebuggerEnabled;
// ******************************************************************
// * 0x0059 - KdDebuggerNotPresent
// ******************************************************************
XBSYSAPI EXPORTNUM(89) BOOLEAN KdDebuggerNotPresent; XBSYSAPI EXPORTNUM(89) BOOLEAN KdDebuggerNotPresent;
// ****************************************************************** // ******************************************************************
// * KfRaiseIrql // * 0x00A0 - KfRaiseIrql()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(160) UCHAR FASTCALL KfRaiseIrql XBSYSAPI EXPORTNUM(160) UCHAR FASTCALL KfRaiseIrql
( (
@ -94,30 +104,42 @@ XBSYSAPI EXPORTNUM(160) UCHAR FASTCALL KfRaiseIrql
); );
// ****************************************************************** // ******************************************************************
// * KfLowerIrql // * 0x00A1 - KfLowerIrql()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(161) VOID FASTCALL KfLowerIrql XBSYSAPI EXPORTNUM(161) VOID FASTCALL KfLowerIrql
( (
IN UCHAR NewIrql IN UCHAR NewIrql
); );
// ******************************************************************
// * 0x00A2 - KiBugCheckData
// ******************************************************************
XBSYSAPI EXPORTNUM(162) ULONG_PTR KiBugCheckData[5]; XBSYSAPI EXPORTNUM(162) ULONG_PTR KiBugCheckData[5];
// ******************************************************************
// * 0x00A3 - KiUnlockDispatcherDatabase()
// ******************************************************************
XBSYSAPI EXPORTNUM(163) VOID FASTCALL KiUnlockDispatcherDatabase XBSYSAPI EXPORTNUM(163) VOID FASTCALL KiUnlockDispatcherDatabase
( (
IN KIRQL OldIrql IN KIRQL OldIrql
); );
// ****************************************************************** // ******************************************************************
// * LaunchDataPage (actually a pointer) // * 0x00A4 - LaunchDataPage (actually a pointer)
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(164) PLAUNCH_DATA_PAGE LaunchDataPage; XBSYSAPI EXPORTNUM(164) PLAUNCH_DATA_PAGE LaunchDataPage;
// ******************************************************************
// * 0x00FC - PhyGetLinkState()
// ******************************************************************
XBSYSAPI EXPORTNUM(252) NTSTATUS NTAPI PhyGetLinkState XBSYSAPI EXPORTNUM(252) NTSTATUS NTAPI PhyGetLinkState
( (
IN ULONG Mode IN ULONG Mode
); );
// ******************************************************************
// * 0x00FD - PhyInitialize()
// ******************************************************************
XBSYSAPI EXPORTNUM(253) NTSTATUS NTAPI PhyInitialize XBSYSAPI EXPORTNUM(253) NTSTATUS NTAPI PhyInitialize
( (
IN ULONG forceReset, IN ULONG forceReset,
@ -125,17 +147,17 @@ XBSYSAPI EXPORTNUM(253) NTSTATUS NTAPI PhyInitialize
); );
// ****************************************************************** // ******************************************************************
// * XboxEEPROMKey // * 0x0141 - XboxEEPROMKey
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(321) UCHAR XboxEEPROMKey[16]; XBSYSAPI EXPORTNUM(321) UCHAR XboxEEPROMKey[16];
// ****************************************************************** // ******************************************************************
// * XboxHardwareInfo // * 0x0142 - XboxHardwareInfo
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(322) XBOX_HARDWARE_INFO XboxHardwareInfo; XBSYSAPI EXPORTNUM(322) XBOX_HARDWARE_INFO XboxHardwareInfo;
// ****************************************************************** // ******************************************************************
// * XboxHDKey // * 0x0143 - XboxHDKey
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(323) UCHAR XboxHDKey[16]; XBSYSAPI EXPORTNUM(323) UCHAR XboxHDKey[16];
@ -146,16 +168,23 @@ typedef struct _XBOX_KRNL_VERSION {
USHORT Qfe; USHORT Qfe;
} XBOX_KRNL_VERSION; } XBOX_KRNL_VERSION;
// ******************************************************************
// * 0x0144 - XboxKrnlVersion
// ******************************************************************
XBSYSAPI EXPORTNUM(324) XBOX_KRNL_VERSION XboxKrnlVersion; XBSYSAPI EXPORTNUM(324) XBOX_KRNL_VERSION XboxKrnlVersion;
// ****************************************************************** // ******************************************************************
// * XboxSignatureKey // * 0x0145 - XboxSignatureKey
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(325) BYTE XboxSignatureKey[16]; XBSYSAPI EXPORTNUM(325) BYTE XboxSignatureKey[16];
XBSYSAPI EXPORTNUM(326) OBJECT_STRING XeImageFileName;
// ****************************************************************** // ******************************************************************
// * 0x0147 - XeLoadSection // * 0x0146 - XeImageFileName
// ******************************************************************
XBSYSAPI EXPORTNUM(326) OBJECT_STRING XeImageFileName;
// ******************************************************************
// * 0x0147 - XeLoadSection()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(327) NTSTATUS NTAPI XeLoadSection XBSYSAPI EXPORTNUM(327) NTSTATUS NTAPI XeLoadSection
( (
@ -163,7 +192,7 @@ XBSYSAPI EXPORTNUM(327) NTSTATUS NTAPI XeLoadSection
); );
// ****************************************************************** // ******************************************************************
// * 0x0148 - XeUnloadSection // * 0x0148 - XeUnloadSection()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(328) NTSTATUS NTAPI XeUnloadSection XBSYSAPI EXPORTNUM(328) NTSTATUS NTAPI XeUnloadSection
( (
@ -171,34 +200,55 @@ XBSYSAPI EXPORTNUM(328) NTSTATUS NTAPI XeUnloadSection
); );
// ****************************************************************** // ******************************************************************
// * XcSHAInit // * 0x014F - XcSHAInit()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(335) VOID NTAPI XcSHAInit(UCHAR *pbSHAContext); XBSYSAPI EXPORTNUM(335) VOID NTAPI XcSHAInit
// ******************************************************************
// * XcSHAUpdate
// ******************************************************************
XBSYSAPI EXPORTNUM(336) VOID NTAPI XcSHAUpdate(UCHAR *pbSHAContext, UCHAR *pbInput, ULONG dwInputLength);
// ******************************************************************
// * XcSHAFinal
// ******************************************************************
XBSYSAPI EXPORTNUM(337) VOID NTAPI XcSHAFinal(UCHAR *pbSHAContext, UCHAR *pbDigest);
XBSYSAPI EXPORTNUM(338) VOID XcRC4Key
( (
IN PUCHAR pbKeyStruct, IN PUCHAR pbSHAContext
IN ULONG dwKeyLength,
IN PUCHAR pbKey
); );
XBSYSAPI EXPORTNUM(339) VOID XcRC4Crypt // ******************************************************************
// * 0x0150 - XcSHAUpdate()
// ******************************************************************
XBSYSAPI EXPORTNUM(336) VOID NTAPI XcSHAUpdate
( (
IN PUCHAR pbKeyStruct, IN PUCHAR pbSHAContext,
IN ULONG dwInputLength, IN PUCHAR pbInput,
IN PUCHAR pbInput IN ULONG dwInputLength
); );
// ******************************************************************
// * 0x0151 - XcSHAFinal()
// ******************************************************************
XBSYSAPI EXPORTNUM(337) VOID NTAPI XcSHAFinal
(
IN PUCHAR pbSHAContext,
IN PUCHAR pbDigest
);
// ******************************************************************
// * 0x0152 - XcRC4Key()
// ******************************************************************
XBSYSAPI EXPORTNUM(338) VOID NTAPI XcRC4Key
(
IN PUCHAR pbKeyStruct,
IN ULONG dwKeyLength,
IN PUCHAR pbKey
);
// ******************************************************************
// * 0x0153 - XcRC4Crypt()
// ******************************************************************
XBSYSAPI EXPORTNUM(339) VOID NTAPI XcRC4Crypt
(
IN PUCHAR pbKeyStruct,
IN ULONG dwInputLength,
IN PUCHAR pbInput
);
// ******************************************************************
// * 0x0154 - XcHMAC()
// ******************************************************************
XBSYSAPI EXPORTNUM(340) VOID NTAPI XcHMAC XBSYSAPI EXPORTNUM(340) VOID NTAPI XcHMAC
( (
IN PBYTE pbKeyMaterial, IN PBYTE pbKeyMaterial,
@ -210,90 +260,139 @@ XBSYSAPI EXPORTNUM(340) VOID NTAPI XcHMAC
OUT PBYTE HmacData OUT PBYTE HmacData
); );
XBSYSAPI EXPORTNUM(341) VOID XcPKEncPublic // ******************************************************************
// * 0x0155 - XcPKEncPublic()
// ******************************************************************
XBSYSAPI EXPORTNUM(341) ULONG NTAPI XcPKEncPublic
( (
IN PBYTE pbPubKey, IN PUCHAR pbPubKey,
IN PBYTE pbInput, IN PUCHAR pbInput,
OUT PBYTE pbOutput OUT PUCHAR pbOutput
); );
XBSYSAPI EXPORTNUM(342) VOID XcPKDecPrivate // ******************************************************************
// * 0x0156 - XcPKDecPrivate()
// ******************************************************************
XBSYSAPI EXPORTNUM(342) ULONG NTAPI XcPKDecPrivate
( (
IN PBYTE pbPrvKey, IN PUCHAR pbPrvKey,
IN PBYTE pbInput, IN PUCHAR pbInput,
OUT PBYTE pbOutput OUT PUCHAR pbOutput
); );
XBSYSAPI EXPORTNUM(343) VOID XcPKGetKeyLen // ******************************************************************
// * 0x0157 - XcPKGetKeyLen()
// ******************************************************************
XBSYSAPI EXPORTNUM(343) ULONG NTAPI XcPKGetKeyLen
( (
OUT PBYTE pbPubKey OUT PUCHAR pbPubKey
); );
XBSYSAPI EXPORTNUM(344) VOID XcVerifyPKCS1Signature // ******************************************************************
// * 0x0158 - XcVerifyPKCS1Signature()
// ******************************************************************
XBSYSAPI EXPORTNUM(344) BOOLEAN NTAPI XcVerifyPKCS1Signature
( (
IN PBYTE pbSig, IN PUCHAR pbSig,
IN PBYTE pbPubKey, IN PUCHAR pbPubKey,
IN PBYTE pbDigest IN PUCHAR pbDigest
); );
XBSYSAPI EXPORTNUM(345) VOID XcModExp // ******************************************************************
// * 0x0159 - XcModExp()
// ******************************************************************
XBSYSAPI EXPORTNUM(345) ULONG NTAPI XcModExp
( (
IN PULONG pA, IN LPDWORD pA,
IN PULONG pB, IN LPDWORD pB,
IN PULONG pC, IN LPDWORD pC,
IN PULONG pD, IN LPDWORD pD,
IN ULONG dwN IN ULONG dwN
); );
XBSYSAPI EXPORTNUM(346) VOID XcDESKeyParity // ******************************************************************
// * 0x015A - XcDESKeyParity()
// ******************************************************************
XBSYSAPI EXPORTNUM(346) VOID NTAPI XcDESKeyParity
( (
IN PBYTE pbKey, IN PUCHAR pbKey,
IN ULONG dwKeyLength IN ULONG dwKeyLength
); );
XBSYSAPI EXPORTNUM(347) VOID XcKeyTable // ******************************************************************
// * 0x015B - XcKeyTable()
// ******************************************************************
XBSYSAPI EXPORTNUM(347) VOID NTAPI XcKeyTable
( (
IN ULONG dwCipher, IN ULONG dwCipher,
IN PBYTE pbKeyTable, OUT PUCHAR pbKeyTable,
IN PBYTE pbKey IN PUCHAR pbKey
); );
XBSYSAPI EXPORTNUM(348) VOID XcBlockCrypt // ******************************************************************
// * 0x015C - XcBlockCrypt()
// ******************************************************************
XBSYSAPI EXPORTNUM(348) VOID NTAPI XcBlockCrypt
( (
IN ULONG dwCipher, IN ULONG dwCipher,
OUT PBYTE pbOutput, OUT PUCHAR pbOutput,
IN PBYTE pbInput, IN PUCHAR pbInput,
IN PBYTE pbKeyTable, IN PUCHAR pbKeyTable,
IN ULONG dwOp IN ULONG dwOp
); );
XBSYSAPI EXPORTNUM(349) VOID XcBlockCryptCBC // ******************************************************************
// * 0x015D - XcBlockCryptCBC()
// ******************************************************************
XBSYSAPI EXPORTNUM(349) VOID NTAPI XcBlockCryptCBC
( (
IN ULONG dwCipher, IN ULONG dwCipher,
IN ULONG dwInputLength, IN ULONG dwInputLength,
OUT PBYTE pbOutput, OUT PUCHAR pbOutput,
IN PBYTE pbInput, IN PUCHAR pbInput,
IN PBYTE pbKeyTable, IN PUCHAR pbKeyTable,
IN ULONG dwOp, IN ULONG dwOp,
OUT PBYTE pbFeedback IN PUCHAR pbFeedback
); );
XBSYSAPI EXPORTNUM(350) VOID XcCryptService // ******************************************************************
// * 0x015E - XcCryptService()
// ******************************************************************
XBSYSAPI EXPORTNUM(350) ULONG NTAPI XcCryptService
( (
IN ULONG dwOp, IN ULONG dwOp,
... IN PVOID pArgs
); );
XBSYSAPI EXPORTNUM(351) VOID XcUpdateCrypto typedef PVOID PCRYPTO_VECTOR; // TODO : Expand
// ******************************************************************
// * 0x015F - XcUpdateCrypto()
// ******************************************************************
XBSYSAPI EXPORTNUM(351) VOID NTAPI XcUpdateCrypto
( (
IN PVOID pNewVector, IN PCRYPTO_VECTOR pNewVector,
IN PVOID pROMVector OUT PCRYPTO_VECTOR pROMVector OPTIONAL
); );
// ******************************************************************
// * 0x0161 - XboxLANKey
// ******************************************************************
XBSYSAPI EXPORTNUM(353) XBOX_KEY_DATA XboxLANKey; XBSYSAPI EXPORTNUM(353) XBOX_KEY_DATA XboxLANKey;
// ******************************************************************
// * 0x0162 - XboxAlternateSignatureKeys
// ******************************************************************
XBSYSAPI EXPORTNUM(354) XBOX_KEY_DATA XboxAlternateSignatureKeys; XBSYSAPI EXPORTNUM(354) XBOX_KEY_DATA XboxAlternateSignatureKeys;
// ******************************************************************
// * 0x0163 - XePublicKeyData
// ******************************************************************
XBSYSAPI EXPORTNUM(355) DWORD XePublicKeyData; XBSYSAPI EXPORTNUM(355) DWORD XePublicKeyData;
// ******************************************************************
// * 0x0165 - IdexChannelObject
// ******************************************************************
XBSYSAPI EXPORTNUM(357) BYTE IdexChannelObject[0x100]; XBSYSAPI EXPORTNUM(357) BYTE IdexChannelObject[0x100];
XBSYSAPI EXPORTNUM(361) VOID *xsnprintf; // prefixed with "x" to avoid xlibc collisions XBSYSAPI EXPORTNUM(361) VOID *xsnprintf; // prefixed with "x" to avoid xlibc collisions

View File

@ -0,0 +1,73 @@
The OpenGL Extension Wrangler Library
Copyright (C) 2002-2007, Milan Ikits <milan ikits[]ieee org>
Copyright (C) 2002-2007, Marcelo E. Magallon <mmagallo[]debian org>
Copyright (C) 2002, Lev Povalahev
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* The name of the author may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
Mesa 3-D graphics library
Version: 7.0
Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
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.

View File

@ -0,0 +1,232 @@
<!-- begin header.html -->
<!--
The OpenGL Extension Wrangler Library
Copyright (C) 2008-2015, Nigel Stewart <nigels[]users sourceforge net>
Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
Copyright (C) 2002, Lev Povalahev
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* The name of the author may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
<html>
<head>
<title>GLEW: The OpenGL Extension Wrangler Library</title>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<link href="glew.css" type="text/css" rel="stylesheet">
</head>
<body bgcolor="#fff0d0">
<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
<tr>
<td bgcolor="#ffffff" align="left" valign="top" width="200">
<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
<tr>
<td valign="top">
<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
<tr><td align="center"><i>Latest Release: <a href="https://sourceforge.net/projects/glew/files/glew/2.0.0/">2.2.0</a></i></td></tr>
<tr><td align="center"><br></td></tr>
<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
<tr><td align="center"><br></td></tr>
<tr><td align="center">
<table border="0" cellpadding="0" cellspacing="0" align="center">
<tr><td align="center"><a href="index.html">Download</a></td></tr>
<tr><td align="center"><a href="basic.html">Usage</a></td></tr>
<tr><td align="center"><a href="build.html">Building</a></td></tr>
<tr><td align="center"><a href="install.html">Installation</a></td></tr>
<tr><td align="center">Source Generation</td></tr>
<tr><td align="center"><a href="log.html">Change Log</a></td></tr>
<tr><td align="center"><br></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew#authors">Authors</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew#copyright-and-licensing">Licensing</a></td></tr>
<tr><td align="center"><br></tr>
<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
</table>
<tr><td align="center"><br></tr>
</table>
</td>
</tr>
<tr>
<td valign="bottom">
<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
<tr><td align="center"><i>Last Update: 07-24-16</i></td></tr>
<tr><td align="center">
<a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
<a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
<a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
<a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
<td bgcolor="#ffffff" align="left" valign="top">
<h1>The OpenGL Extension Wrangler Library</h1>
<!-- end header.html -->
<h2>Automatic Code Generation</h2>
<p>
Starting from release 1.1.0, the source code and parts of the
documentation are automatically generated from the extension
specifications in a two-step process. In the first step,
specification files from the OpenGL registry are downloaded and
parsed. Skeleton descriptors are created for each extension. These
descriptors contain all necessary information for creating the source
code and documentation in a simple and compact format, including the
name of the extension, url link to the specification, tokens, function
declarations, typedefs and struct definitions. In the second step,
the header files as well as the library and glewinfo source are
generated from the descriptor files. The code generation scripts are
located in the <tt>auto</tt> subdirectory.
</p>
<p>
The code generation scripts require GNU make, wget, and perl. On
Windows, the simplest way to get access to these tools is to install
<a href="http://www.cygwin.com/">Cygwin</a>, but make sure that the
root directory is mounted in binary mode. The makefile in the
<tt>auto</tt> directory provides the following build targets:
</p>
<table border=0 cellpadding=0 cellspacing=5>
<tr><td align="left" valign="top"><tt>make</tt></td>
<td align=left>Create the source files from the descriptors.<br/> If the
descriptors do not exist, create them from the spec files.<br/> If the spec
files do not exist, download them from the OpenGL repository.</td></tr>
<tr><td align="left" valign="top"><tt>make&nbsp;clean</tt></td>
<td align=left>Delete the source files.</td></tr>
<tr><td align="left" valign="top"><tt>make&nbsp;clobber</tt></td>
<td align=left>Delete the source files and the descriptors.</td></tr>
<tr><td align="left" valign="top"><tt>make&nbsp;destroy</tt></td>
<td align=left>Delete the source files, the descriptors, and the spec files.</td></tr>
<tr><td align="left" valign="top"><tt>make&nbsp;custom</tt></td>
<td align=left>Create the source files for the extensions
listed in <tt>auto/custom.txt</tt>.<br/> See "Custom Code
Generation" below for more details.</td></tr>
</table>
<h3>Adding a New Extension</h3>
<p>
To add a new extension, create a descriptor file for the extension in
<tt>auto/core</tt> and rerun the code generation scripts by typing
<tt>make clean; make</tt> in the <tt>auto</tt> directory.
</p>
<p>
The format of the descriptor file is given below. Items in
brackets are optional.
</p>
<p class="pre">
&lt;Extension Name&gt;<br>
[&lt;URL of Specification File&gt;]<br>
&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Token Name&gt; &lt;Token Value&gt;]<br>
&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Token Name&gt; &lt;Token Value&gt;]<br>
&nbsp;&nbsp;&nbsp;&nbsp;...<br>
&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Typedef&gt;]<br>
&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Typedef&gt;]<br>
&nbsp;&nbsp;&nbsp;&nbsp;...<br>
&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Function Signature&gt;]<br>
&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Function Signature&gt;]<br>
&nbsp;&nbsp;&nbsp;&nbsp;...<br>
<!-- &nbsp;&nbsp;&nbsp;&nbsp;[&lt;Function Definition&gt;]<br>
&nbsp;&nbsp;&nbsp;&nbsp;[&lt;Function Definition&gt;]<br>
&nbsp;&nbsp;&nbsp;&nbsp;...<br> -->
</p>
<!--
<p>
Note that <tt>Function Definitions</tt> are copied to the header files
without changes and have to be terminated with a semicolon. In
contrast, <tt>Tokens</tt>, <tt>Function signatures</tt>, and
<tt>Typedefs</tt> should not be terminated with a semicolon.
</p>
-->
<p>
Take a look at one of the files in <tt>auto/core</tt> for an
example. Note that typedefs and function signatures should not be
terminated with a semicolon.
</p>
<h3>Custom Code Generation</h3>
<p>
Starting from GLEW 1.3.0, it is possible to control which extensions
to include in the libarary by specifying a list in
<tt>auto/custom.txt</tt>. This is useful when you do not need all the
extensions and would like to reduce the size of the source files.
Type <tt>make clean; make custom</tt> in the <tt>auto</tt> directory
to rerun the scripts with the custom list of extensions.
</p>
<p>
For example, the following is the list of extensions needed to get GLEW and the
utilities to compile.
</p>
<p class="pre">
WGL_ARB_extensions_string<br>
WGL_ARB_multisample<br>
WGL_ARB_pixel_format<br>
WGL_ARB_pbuffer<br>
WGL_EXT_extensions_string<br>
WGL_ATI_pixel_format_float<br>
WGL_NV_float_buffer<br>
</p>
<h2>Separate Namespace</h2>
<p>
To avoid name clashes when linking with libraries that include the
same symbols, extension entry points are declared in a separate
namespace (release 1.1.0 and up). This is achieved by aliasing OpenGL
function names to their GLEW equivalents. For instance,
<tt>glFancyFunction</tt> is simply an alias to
<tt>glewFancyFunction</tt>. The separate namespace does not effect
token and function pointer definitions.
</p>
<h2>Known Issues</h2>
<p>
GLEW requires GLX 1.2 for compatibility with GLUT.
</p>
<!-- begin footer.html -->
</td></tr></table></body>
<!-- end footer.html -->

View File

@ -0,0 +1,282 @@
<!-- begin header.html -->
<!--
The OpenGL Extension Wrangler Library
Copyright (C) 2008-2015, Nigel Stewart <nigels[]users sourceforge net>
Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
Copyright (C) 2002, Lev Povalahev
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* The name of the author may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
<html>
<head>
<title>GLEW: The OpenGL Extension Wrangler Library</title>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<link href="glew.css" type="text/css" rel="stylesheet">
</head>
<body bgcolor="#fff0d0">
<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
<tr>
<td bgcolor="#ffffff" align="left" valign="top" width="200">
<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
<tr>
<td valign="top">
<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
<tr><td align="center"><i>Latest Release: <a href="https://sourceforge.net/projects/glew/files/glew/2.0.0/">2.2.0</a></i></td></tr>
<tr><td align="center"><br></td></tr>
<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
<tr><td align="center"><br></td></tr>
<tr><td align="center">
<table border="0" cellpadding="0" cellspacing="0" align="center">
<tr><td align="center"><a href="index.html">Download</a></td></tr>
<tr><td align="center">Usage</td></tr>
<tr><td align="center"><a href="build.html">Building</a></td></tr>
<tr><td align="center"><a href="install.html">Installation</a></td></tr>
<tr><td align="center"><a href="advanced.html">Source Generation</a></td></tr>
<tr><td align="center"><a href="log.html">Change Log</a></td></tr>
<tr><td align="center"><br></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew#authors">Authors</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew#copyright-and-licensing">Licensing</a></td></tr>
<tr><td align="center"><br></tr>
<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
</table>
<tr><td align="center"><br></tr>
</table>
</td>
</tr>
<tr>
<td valign="bottom">
<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
<tr><td align="center"><i>Last Update: 07-24-16</i></td></tr>
<tr><td align="center">
<a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
<a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
<a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
<a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
<td bgcolor="#ffffff" align="left" valign="top">
<h1>The OpenGL Extension Wrangler Library</h1>
<!-- end header.html -->
<h2>Initializing GLEW</h2>
<p>
First you need to create a valid OpenGL rendering context and call
<tt>glewInit()</tt> to initialize the extension entry points. If
<tt>glewInit()</tt> returns <tt>GLEW_OK</tt>, the initialization
succeeded and you can use the available extensions as well as core
OpenGL functionality. For example:
</p>
<p class="pre">
#include &lt;GL/glew.h&gt;<br>
#include &lt;GL/glut.h&gt;<br>
...<br>
glutInit(&amp;argc, argv);<br>
glutCreateWindow("GLEW Test");<br>
GLenum err = glewInit();<br>
if (GLEW_OK != err)<br>
{<br>
&nbsp;&nbsp;/* Problem: glewInit failed, something is seriously wrong. */<br>
&nbsp;&nbsp;fprintf(stderr, "Error: %s\n", glewGetErrorString(err));<br>
&nbsp;&nbsp;...<br>
}<br>
fprintf(stdout, "Status: Using GLEW %s\n", glewGetString(GLEW_VERSION));<br>
</p>
<h2>Checking for Extensions</h2>
<p>
Starting from GLEW 1.1.0, you can find out if a particular extension
is available on your platform by querying globally defined variables
of the form <tt>GLEW_{extension_name}</tt>:
</p>
<p class="pre">
if (GLEW_ARB_vertex_program)<br>
{<br>
&nbsp;&nbsp;/* It is safe to use the ARB_vertex_program extension here. */<br>
&nbsp;&nbsp;glGenProgramsARB(...);<br>
}<br>
</p>
<p>
<b>In GLEW 1.0.x, a global structure was used for this task. To ensure
binary compatibility between releases, the struct was replaced with a
set of variables.</b>
</p>
<p>
You can also check for core OpenGL functionality. For example, to
see if OpenGL 1.3 is supported, do the following:
</p>
<p class="pre">
if (GLEW_VERSION_1_3)<br>
{<br>
&nbsp;&nbsp;/* Yay! OpenGL 1.3 is supported! */<br>
}<br>
</p>
<p>
In general, you can check if <tt>GLEW_{extension_name}</tt> or
<tt>GLEW_VERSION_{version}</tt> is true or false.
</p>
<p>
It is also possible to perform extension checks from string
input. Starting from the 1.3.0 release, use <tt>glewIsSupported</tt>
to check if the required core or extension functionality is
available:
</p>
<p class="pre">
if (glewIsSupported("GL_VERSION_1_4&nbsp;&nbsp;GL_ARB_point_sprite"))<br>
{<br>
&nbsp;&nbsp;/* Great, we have OpenGL 1.4 + point sprites. */<br>
}<br>
</p>
<p>
For extensions only, <tt>glewGetExtension</tt> provides a slower alternative
(GLEW 1.0.x-1.2.x). <b>Note that in the 1.3.0 release </b>
<tt>glewGetExtension</tt> <b>was replaced with </b>
<tt>glewIsSupported</tt>.
</p>
<p class="pre">
if (glewGetExtension("GL_ARB_fragment_program"))<br>
{<br>
&nbsp;&nbsp;/* Looks like ARB_fragment_program is supported. */<br>
}<br>
</p>
<h2>Experimental Drivers</h2>
<p>
GLEW obtains information on the supported extensions from the graphics
driver. Experimental or pre-release drivers, however, might not
report every available extension through the standard mechanism, in
which case GLEW will report it unsupported. To circumvent this
situation, the <tt>glewExperimental</tt> global switch can be turned
on by setting it to <tt>GL_TRUE</tt> before calling
<tt>glewInit()</tt>, which ensures that all extensions with valid
entry points will be exposed.
</p>
<h2>Platform Specific Extensions</h2>
<p>
Platform specific extensions are separated into two header files:
<tt>wglew.h</tt> and <tt>glxew.h</tt>, which define the available
<tt>WGL</tt> and <tt>GLX</tt> extensions. To determine if a certain
extension is supported, query <tt>WGLEW_{extension name}</tt> or
<tt>GLXEW_{extension_name}</tt>. For example:
</p>
<p class="pre">
#include &lt;GL/wglew.h&gt;<br>
<br>
if (WGLEW_ARB_pbuffer)<br>
{<br>
&nbsp;&nbsp;/* OK, we can use pbuffers. */<br>
}<br>
else<br>
{<br>
&nbsp;&nbsp;/* Sorry, pbuffers will not work on this platform. */<br>
}<br>
</p>
<p>
Alternatively, use <tt>wglewIsSupported</tt> or
<tt>glxewIsSupported</tt> to check for extensions from a string:
</p>
<p class="pre">
if (wglewIsSupported("WGL_ARB_pbuffer"))<br>
{<br>
&nbsp;&nbsp;/* OK, we can use pbuffers. */<br>
}<br>
</p>
<h2>Utilities</h2>
<p>
GLEW provides two command-line utilities: one for creating a list of
available extensions and visuals; and another for verifying extension
entry points.
</p>
<h3>visualinfo: extensions and visuals</h3>
<p>
<tt>visualinfo</tt> is an extended version of <tt>glxinfo</tt>. The
Windows version creates a file called <tt>visualinfo.txt</tt>, which
contains a list of available OpenGL, WGL, and GLU extensions as well
as a table of visuals aka. pixel formats. Pbuffer and MRT capable
visuals are also included. For additional usage information, type
<tt>visualinfo -h</tt>.
</p>
<h3>glewinfo: extension verification utility</h3>
<p>
<tt>glewinfo</tt> allows you to verify the entry points for the
extensions supported on your platform. The Windows version
reports the results to a text file called <tt>glewinfo.txt</tt>. The
Unix version prints the results to <tt>stdout</tt>.
</p>
<p>Windows usage:</p>
<blockquote><pre>glewinfo [-pf &lt;id&gt;]</pre></blockquote>
<p>where <tt>&lt;id&gt;</tt> is the pixel format id for which the
capabilities are displayed.</p>
<p>Unix usage:</p>
<blockquote><pre>glewinfo [-display &lt;dpy&gt;] [-visual &lt;id&gt;]</pre></blockquote>
<p>where <tt>&lt;dpy&gt;</tt> is the X11 display and <tt>&lt;id&gt;</tt> is
the visual id for which the capabilities are displayed.</p>
<!-- begin footer.html -->
</td></tr></table></body>
<!-- end footer.html -->

View File

@ -0,0 +1,151 @@
<!-- begin header.html -->
<!--
The OpenGL Extension Wrangler Library
Copyright (C) 2008-2015, Nigel Stewart <nigels[]users sourceforge net>
Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
Copyright (C) 2002, Lev Povalahev
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* The name of the author may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
<html>
<head>
<title>GLEW: The OpenGL Extension Wrangler Library</title>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<link href="glew.css" type="text/css" rel="stylesheet">
</head>
<body bgcolor="#fff0d0">
<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
<tr>
<td bgcolor="#ffffff" align="left" valign="top" width="200">
<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
<tr>
<td valign="top">
<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
<tr><td align="center"><i>Latest Release: <a href="https://sourceforge.net/projects/glew/files/glew/2.0.0/">2.2.0</a></i></td></tr>
<tr><td align="center"><br></td></tr>
<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
<tr><td align="center"><br></td></tr>
<tr><td align="center">
<table border="0" cellpadding="0" cellspacing="0" align="center">
<tr><td align="center"><a href="index.html">Download</a></td></tr>
<tr><td align="center"><a href="basic.html">Usage</a></td></tr>
<tr><td align="center">Building</td></tr>
<tr><td align="center"><a href="install.html">Installation</a></td></tr>
<tr><td align="center"><a href="advanced.html">Source Generation</a></td></tr>
<tr><td align="center"><a href="log.html">Change Log</a></td></tr>
<tr><td align="center"><br></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew#authors">Authors</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew#copyright-and-licensing">Licensing</a></td></tr>
<tr><td align="center"><br></tr>
<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
</table>
<tr><td align="center"><br></tr>
</table>
</td>
</tr>
<tr>
<td valign="bottom">
<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
<tr><td align="center"><i>Last Update: 07-24-16</i></td></tr>
<tr><td align="center">
<a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
<a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
<a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
<a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
<td bgcolor="#ffffff" align="left" valign="top">
<h1>The OpenGL Extension Wrangler Library</h1>
<!-- end header.html -->
<h2>Building GLEW</h2>
<h3>Windows</h3>
<p>A MS Visual Studio project is provided in the <tt>build/vc6</tt> directory.</p>
<p>Pre-built shared and static libraries are also available for <a href="index.html">download</a>.</p>
<h3>Makefile</h3>
<p>For platforms other than MS Windows, the provided <tt>Makefile</tt> is used.</p>
<h4>Command-line variables</h4>
<table border=0 cellpadding=0 cellspacing=10>
<tr><td valign=top><tt>SYSTEM</tt></td><td valign=top>auto</td>
<td align=left>Target system to build: darwin, linux, solaris, etc.<br/>For a full list of supported targets: <tt>ls config/Makefile.*</tt><br/>
<a href="http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree">config.guess</a> is used to auto detect, as necessary.</td></tr>
<tr><td valign=top><tt>GLEW_DEST</tt></td><td valign=top><tt>/usr</tt></td>
<td align=left>Base directory for installation.</td></tr>
</table>
<h4>Make targets</h4>
<table border=0 cellpadding=0 cellspacing=10>
<tr><td valign=top><tt>all</tt></td><td>Build everything.</td><tr>
<tr><td valign=top><tt>glew.lib</tt></td><td>Build static and dynamic GLEW libraries.</td><tr>
<tr><td valign=top><tt>glew.lib.mx</tt></td><td>Build static and dynamic GLEWmx libraries.</td><tr>
<tr><td valign=top><tt>glew.bin</tt></td><td>Build <tt>glewinfo</tt> and <tt>visualinfo</tt> utilities.</td><tr>
<tr><td valign=top><tt>clean</tt></td><td>Delete temporary and built files.</td><tr>
<tr><td valign=top><tt>install.all</tt></td><td>Install everything.</td><tr>
<tr><td valign=top><tt>install</tt></td><td>Install GLEW libraries.</td><tr>
<tr><td valign=top><tt>install.mx</tt></td><td>Install GLEWmx libraries.</td><tr>
<tr><td valign=top><tt>install.bin</tt></td><td>Install <tt>glewinfo</tt> and <tt>visualinfo</tt> utilities.</td><tr>
<tr><td valign=top><tt>uninstall</tt></td><td>Delete installed files.</td><tr>
</table>
<h4>Requirements</h4>
<ul>
<li>GNU make</li>
<li>perl</li>
<li>wget</li>
<li>GNU sed</li>
<li>gcc compiler</li>
<li>git</li>
</ul>
Ubuntu: <pre>sudo apt-get install libXmu-dev libXi-dev libgl-dev dos2unix git wget</pre>
Fedora: <pre>sudo yum install libXmu-devel libXi-devel libGL-devel dos2unix git wget</pre>
<!-- begin footer.html -->
</td></tr></table></body>
<!-- end footer.html -->

View File

@ -0,0 +1,104 @@
<!-- begin header.html -->
<!--
The OpenGL Extension Wrangler Library
Copyright (C) 2008-2015, Nigel Stewart <nigels[]users sourceforge net>
Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
Copyright (C) 2002, Lev Povalahev
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* The name of the author may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
<html>
<head>
<title>GLEW: The OpenGL Extension Wrangler Library</title>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<link href="glew.css" type="text/css" rel="stylesheet">
</head>
<body bgcolor="#fff0d0">
<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
<tr>
<td bgcolor="#ffffff" align="left" valign="top" width="200">
<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
<tr>
<td valign="top">
<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
<tr><td align="center"><i>Latest Release: <a href="https://sourceforge.net/projects/glew/files/glew/2.0.0/">2.2.0</a></i></td></tr>
<tr><td align="center"><br></td></tr>
<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
<tr><td align="center"><br></td></tr>
<tr><td align="center">
<table border="0" cellpadding="0" cellspacing="0" align="center">
<tr><td align="center"><a href="index.html">Download</a></td></tr>
<tr><td align="center"><a href="basic.html">Usage</a></td></tr>
<tr><td align="center"><a href="build.html">Building</a></td></tr>
<tr><td align="center"><a href="install.html">Installation</a></td></tr>
<tr><td align="center"><a href="advanced.html">Source Generation</a></td></tr>
<tr><td align="center"><a href="log.html">Change Log</a></td></tr>
<tr><td align="center"><br></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew#authors">Authors</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew#copyright-and-licensing">Licensing</a></td></tr>
<tr><td align="center"><br></tr>
<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
</table>
<tr><td align="center"><br></tr>
</table>
</td>
</tr>
<tr>
<td valign="bottom">
<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
<tr><td align="center"><i>Last Update: 07-24-16</i></td></tr>
<tr><td align="center">
<a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
<a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
<a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
<a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
<td bgcolor="#ffffff" align="left" valign="top">
<h1>The OpenGL Extension Wrangler Library</h1>
<!-- end header.html -->
<p><a href="https://github.com/nigels-com/glew#copyright-and-licensing">
Author, copyright and licensing information</a> on github.</p>
<!-- begin footer.html -->
</td></tr></table></body>
<!-- end footer.html -->

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@ -0,0 +1,187 @@
h1
{
color: black;
font: 23px "Verdana", "Arial", "Helvetica", sans-serif;
font-weight: bold;
text-align: center;
margin-top: 12px;
margin-bottom: 18px;
}
h2
{
color: black;
font: 18px "Verdana", "Arial", "Helvetica", sans-serif;
font-weight: bold;
text-align: left;
padding-top: 0px;
padding-bottom: 0px;
margin-top: 18px;
margin-bottom: 12px;
}
h3
{
color: black;
font: 17px "Verdana", "Arial", "Helvetica", sans-serif;
text-align: left;
padding-top: 0px;
padding-bottom: 0px;
margin-top: 12px;
margin-bottom: 12px;
}
small
{
font: 8pt "Verdana", "Arial", "Helvetica", sans-serif;
}
body
{
color: black;
font: 10pt "Verdana", "Arial", "Helvetica", sans-serif;
text-align: left;
}
td
{
color: black;
font: 10pt "Verdana", "Arial", "Helvetica", sans-serif;
}
tt
{
color: rgb(0,120,0);
}
/* color: maroon; */
td.num
{
color: lightgrey;
font: 10pt "Verdana", "Arial", "Helvetica", sans-serif;
text-align: right;
}
blockquote
{
color: rgb(0,120,0);
background: #f0f0f0;
text-align: left;
margin-left: 40px;
margin-right: 40px;
margin-bottom: 6px;
padding-bottom: 0px;
margin-top: 0px;
padding-top: 0px;
border-top: 0px;
border-width: 0px;
}
pre
{
color: rgb(0,120,0);
background: #f0f0f0;
text-align: left;
margin-left: 40px;
margin-right: 40px;
margin-bottom: 6px;
padding-bottom: 0px;
margin-top: 0px;
padding-top: 0px;
border-top: 0px;
border-width: 0px;
}
p
{
color: black;
font: 10pt "Verdana", "Arial", "Helvetica", sans-serif;
text-align: left;
margin-bottom: 0px;
padding-bottom: 6px;
margin-top: 0px;
padding-top: 0px;
}
p.right
{
color: black;
font: 10pt "Verdana", "Arial", "Helvetica", sans-serif;
text-align: right;
margin-bottom: 0px;
padding-bottom: 6px;
margin-top: 0px;
padding-top: 0px;
}
p.pre
{
color: rgb(0,120,0);
font: 10pt "Courier New", "Courier", monospace;
background: #f0f0f0;
text-align: left;
margin-top: 0px;
margin-bottom: 6px;
margin-left: 40px;
margin-right: 40px;
padding-top: 0px;
padding-bottom: 6px;
padding-left: 6px;
padding-right: 6px;
border-top: 0px;
border-width: 0px;
}
a:link
{
color: rgb(0,0,139);
text-decoration: none;
}
a:visited
{
color: rgb(220,20,60);
text-decoration: none;
}
a:hover
{
color: rgb(220,20,60);
text-decoration: underline;
background: "#e8e8e8";
}
ul
{
list-style-type: disc;
text-align: left;
margin-left: 40px;
margin-top: 0px;
padding-top: 0px;
margin-bottom: 0px;
padding-bottom: 3px;
}
ul.none
{
list-style-type: none;
}
ol
{
text-align: left;
margin-left: 40px;
margin-top: 0px;
padding-top: 0px;
margin-bottom: 0px;
padding-bottom: 12px;
}
hr
{
color: maroon;
background-color: maroon;
height: 1px;
border: 0px;
width: 80%;
}

View File

@ -0,0 +1,724 @@
<!-- begin header.html -->
<!--
The OpenGL Extension Wrangler Library
Copyright (C) 2008-2015, Nigel Stewart <nigels[]users sourceforge net>
Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
Copyright (C) 2002, Lev Povalahev
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* The name of the author may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
<html>
<head>
<title>GLEW: The OpenGL Extension Wrangler Library</title>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<link href="glew.css" type="text/css" rel="stylesheet">
</head>
<body bgcolor="#fff0d0">
<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
<tr>
<td bgcolor="#ffffff" align="left" valign="top" width="200">
<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
<tr>
<td valign="top">
<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
<tr><td align="center"><i>Latest Release: <a href="https://sourceforge.net/projects/glew/files/glew/2.0.0/">2.2.0</a></i></td></tr>
<tr><td align="center"><br></td></tr>
<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
<tr><td align="center"><br></td></tr>
<tr><td align="center">
<table border="0" cellpadding="0" cellspacing="0" align="center">
<tr><td align="center"><a href="index.html">Download</a></td></tr>
<tr><td align="center"><a href="basic.html">Usage</a></td></tr>
<tr><td align="center"><a href="build.html">Building</a></td></tr>
<tr><td align="center"><a href="install.html">Installation</a></td></tr>
<tr><td align="center"><a href="advanced.html">Source Generation</a></td></tr>
<tr><td align="center"><a href="log.html">Change Log</a></td></tr>
<tr><td align="center"><br></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew#authors">Authors</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew#copyright-and-licensing">Licensing</a></td></tr>
<tr><td align="center"><br></tr>
<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
</table>
<tr><td align="center"><br></tr>
</table>
</td>
</tr>
<tr>
<td valign="bottom">
<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
<tr><td align="center"><i>Last Update: 07-24-16</i></td></tr>
<tr><td align="center">
<a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
<a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
<a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
<a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
<td bgcolor="#ffffff" align="left" valign="top">
<h1>The OpenGL Extension Wrangler Library</h1>
<!-- end header.html -->
<h2>Supported OpenGL Extensions</h2>
<table border="0" width="100%" cellpadding="1" cellspacing="0" align="center">
<tr><td class="num">1</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/3DFX/3dfx_multisample.txt">3DFX_multisample</a></td></tr>
<tr><td class="num">2</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/3DFX/tbuffer.txt">3DFX_tbuffer</a></td></tr>
<tr><td class="num">3</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/3DFX/texture_compression_FXT1.txt">3DFX_texture_compression_FXT1</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">4</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/blend_minmax_factor.txt">AMD_blend_minmax_factor</a></td></tr>
<tr><td class="num">5</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/conservative_depth.txt">AMD_conservative_depth</a></td></tr>
<tr><td class="num">6</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/debug_output.txt">AMD_debug_output</a></td></tr>
<tr><td class="num">7</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/depth_clamp_separate.txt">AMD_depth_clamp_separate</a></td></tr>
<tr><td class="num">8</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/draw_buffers_blend.txt">AMD_draw_buffers_blend</a></td></tr>
<tr><td class="num">9</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/gcn_shader.txt">AMD_gcn_shader</a></td></tr>
<tr><td class="num">10</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/gpu_shader_int64.txt">AMD_gpu_shader_int64</a></td></tr>
<tr><td class="num">11</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/interleaved_elements.txt">AMD_interleaved_elements</a></td></tr>
<tr><td class="num">12</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/multi_draw_indirect.txt">AMD_multi_draw_indirect</a></td></tr>
<tr><td class="num">13</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/name_gen_delete.txt">AMD_name_gen_delete</a></td></tr>
<tr><td class="num">14</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/occlusion_query_event.txt">AMD_occlusion_query_event</a></td></tr>
<tr><td class="num">15</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/performance_monitor.txt">AMD_performance_monitor</a></td></tr>
<tr><td class="num">16</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/pinned_memory.txt">AMD_pinned_memory</a></td></tr>
<tr><td class="num">17</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/query_buffer_object.txt">AMD_query_buffer_object</a></td></tr>
<tr><td class="num">18</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/sample_positions.txt">AMD_sample_positions</a></td></tr>
<tr><td class="num">19</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/seamless_cubemap_per_texture.txt">AMD_seamless_cubemap_per_texture</a></td></tr>
<tr><td class="num">20</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/shader_atomic_counter_ops.txt">AMD_shader_atomic_counter_ops</a></td></tr>
<tr><td class="num">21</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/shader_explicit_vertex_parameter.txt">AMD_shader_explicit_vertex_parameter</a></td></tr>
<tr><td class="num">22</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/shader_stencil_export.txt">AMD_shader_stencil_export</a></td></tr>
<tr><td class="num">23</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/shader_stencil_value_export.txt">AMD_shader_stencil_value_export</a></td></tr>
<tr><td class="num">24</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/shader_trinary_minmax.txt">AMD_shader_trinary_minmax</a></td></tr>
<tr><td class="num">25</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/sparse_texture.txt">AMD_sparse_texture</a></td></tr>
<tr><td class="num">26</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/stencil_operation_extended.txt">AMD_stencil_operation_extended</a></td></tr>
<tr><td class="num">27</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/texture_texture4.txt">AMD_texture_texture4</a></td></tr>
<tr><td class="num">28</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/transform_feedback3_lines_triangles.txt">AMD_transform_feedback3_lines_triangles</a></td></tr>
<tr><td class="num">29</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/transform_feedback4.txt">AMD_transform_feedback4</a></td></tr>
<tr><td class="num">30</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/vertex_shader_layer.txt">AMD_vertex_shader_layer</a></td></tr>
<tr><td class="num">31</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/vertex_shader_tessellator.txt">AMD_vertex_shader_tessellator</a></td></tr>
<tr><td class="num">32</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/vertex_shader_viewport_index.txt">AMD_vertex_shader_viewport_index</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">33</td><td>&nbsp;</td><td><a href="https://code.google.com/p/angleproject/source/browse/#git%2Fextensions">ANGLE_depth_texture</a></td></tr>
<tr><td class="num">34</td><td>&nbsp;</td><td><a href="https://code.google.com/p/angleproject/source/browse/#git%2Fextensions">ANGLE_framebuffer_blit</a></td></tr>
<tr><td class="num">35</td><td>&nbsp;</td><td><a href="https://code.google.com/p/angleproject/source/browse/#git%2Fextensions">ANGLE_framebuffer_multisample</a></td></tr>
<tr><td class="num">36</td><td>&nbsp;</td><td><a href="https://code.google.com/p/angleproject/source/browse/#git%2Fextensions">ANGLE_instanced_arrays</a></td></tr>
<tr><td class="num">37</td><td>&nbsp;</td><td><a href="https://code.google.com/p/angleproject/source/browse/#git%2Fextensions">ANGLE_pack_reverse_row_order</a></td></tr>
<tr><td class="num">38</td><td>&nbsp;</td><td><a href="https://code.google.com/p/angleproject/source/browse/#git%2Fextensions">ANGLE_program_binary</a></td></tr>
<tr><td class="num">39</td><td>&nbsp;</td><td><a href="https://code.google.com/p/angleproject/source/browse/#git%2Fextensions">ANGLE_texture_compression_dxt1</a></td></tr>
<tr><td class="num">40</td><td>&nbsp;</td><td><a href="https://code.google.com/p/angleproject/source/browse/#git%2Fextensions">ANGLE_texture_compression_dxt3</a></td></tr>
<tr><td class="num">41</td><td>&nbsp;</td><td><a href="https://code.google.com/p/angleproject/source/browse/#git%2Fextensions">ANGLE_texture_compression_dxt5</a></td></tr>
<tr><td class="num">42</td><td>&nbsp;</td><td><a href="https://code.google.com/p/angleproject/source/browse/#git%2Fextensions">ANGLE_texture_usage</a></td></tr>
<tr><td class="num">43</td><td>&nbsp;</td><td><a href="https://code.google.com/p/angleproject/source/browse/#git%2Fextensions">ANGLE_timer_query</a></td></tr>
<tr><td class="num">44</td><td>&nbsp;</td><td><a href="https://code.google.com/p/angleproject/source/browse/#git%2Fextensions">ANGLE_translated_shader_source</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">45</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/APPLE/aux_depth_stencil.txt">APPLE_aux_depth_stencil</a></td></tr>
<tr><td class="num">46</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/APPLE/client_storage.txt">APPLE_client_storage</a></td></tr>
<tr><td class="num">47</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/APPLE/element_array.txt">APPLE_element_array</a></td></tr>
<tr><td class="num">48</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/APPLE/fence.txt">APPLE_fence</a></td></tr>
<tr><td class="num">49</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/APPLE/float_pixels.txt">APPLE_float_pixels</a></td></tr>
<tr><td class="num">50</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/APPLE/flush_buffer_range.txt">APPLE_flush_buffer_range</a></td></tr>
<tr><td class="num">51</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/APPLE/object_purgeable.txt">APPLE_object_purgeable</a></td></tr>
<tr><td class="num">52</td><td>&nbsp;</td><td>APPLE_pixel_buffer</td></tr>
<tr><td class="num">53</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/APPLE/rgb_422.txt">APPLE_rgb_422</a></td></tr>
<tr><td class="num">54</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/APPLE/row_bytes.txt">APPLE_row_bytes</a></td></tr>
<tr><td class="num">55</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/APPLE/specular_vector.txt">APPLE_specular_vector</a></td></tr>
<tr><td class="num">56</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/APPLE/texture_range.txt">APPLE_texture_range</a></td></tr>
<tr><td class="num">57</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/APPLE/transform_hint.txt">APPLE_transform_hint</a></td></tr>
<tr><td class="num">58</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/APPLE/vertex_array_object.txt">APPLE_vertex_array_object</a></td></tr>
<tr><td class="num">59</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/APPLE/vertex_array_range.txt">APPLE_vertex_array_range</a></td></tr>
<tr><td class="num">60</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/APPLE/vertex_program_evaluators.txt">APPLE_vertex_program_evaluators</a></td></tr>
<tr><td class="num">61</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/APPLE/ycbcr_422.txt">APPLE_ycbcr_422</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">62</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/ES2_compatibility.txt">ARB_ES2_compatibility</a></td></tr>
<tr><td class="num">63</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/ES3_1_compatibility.txt">ARB_ES3_1_compatibility</a></td></tr>
<tr><td class="num">64</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/ES3_2_compatibility.txt">ARB_ES3_2_compatibility</a></td></tr>
<tr><td class="num">65</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/ES3_compatibility.txt">ARB_ES3_compatibility</a></td></tr>
<tr><td class="num">66</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/arrays_of_arrays.txt">ARB_arrays_of_arrays</a></td></tr>
<tr><td class="num">67</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/base_instance.txt">ARB_base_instance</a></td></tr>
<tr><td class="num">68</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/bindless_texture.txt">ARB_bindless_texture</a></td></tr>
<tr><td class="num">69</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/blend_func_extended.txt">ARB_blend_func_extended</a></td></tr>
<tr><td class="num">70</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/buffer_storage.txt">ARB_buffer_storage</a></td></tr>
<tr><td class="num">71</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/cl_event.txt">ARB_cl_event</a></td></tr>
<tr><td class="num">72</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/clear_buffer_object.txt">ARB_clear_buffer_object</a></td></tr>
<tr><td class="num">73</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/clear_texture.txt">ARB_clear_texture</a></td></tr>
<tr><td class="num">74</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/clip_control.txt">ARB_clip_control</a></td></tr>
<tr><td class="num">75</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/color_buffer_float.txt">ARB_color_buffer_float</a></td></tr>
<tr><td class="num">76</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/compatibility.txt">ARB_compatibility</a></td></tr>
<tr><td class="num">77</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/compressed_texture_pixel_storage.txt">ARB_compressed_texture_pixel_storage</a></td></tr>
<tr><td class="num">78</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/compute_shader.txt">ARB_compute_shader</a></td></tr>
<tr><td class="num">79</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/compute_variable_group_size.txt">ARB_compute_variable_group_size</a></td></tr>
<tr><td class="num">80</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/conditional_render_inverted.txt">ARB_conditional_render_inverted</a></td></tr>
<tr><td class="num">81</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/conservative_depth.txt">ARB_conservative_depth</a></td></tr>
<tr><td class="num">82</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/copy_buffer.txt">ARB_copy_buffer</a></td></tr>
<tr><td class="num">83</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/copy_image.txt">ARB_copy_image</a></td></tr>
<tr><td class="num">84</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/cull_distance.txt">ARB_cull_distance</a></td></tr>
<tr><td class="num">85</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/debug_output.txt">ARB_debug_output</a></td></tr>
<tr><td class="num">86</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/depth_buffer_float.txt">ARB_depth_buffer_float</a></td></tr>
<tr><td class="num">87</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/depth_clamp.txt">ARB_depth_clamp</a></td></tr>
<tr><td class="num">88</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/depth_texture.txt">ARB_depth_texture</a></td></tr>
<tr><td class="num">89</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/derivative_control.txt">ARB_derivative_control</a></td></tr>
<tr><td class="num">90</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/direct_state_access.txt">ARB_direct_state_access</a></td></tr>
<tr><td class="num">91</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/draw_buffers.txt">ARB_draw_buffers</a></td></tr>
<tr><td class="num">92</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/draw_buffers_blend.txt">ARB_draw_buffers_blend</a></td></tr>
<tr><td class="num">93</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/draw_elements_base_vertex.txt">ARB_draw_elements_base_vertex</a></td></tr>
<tr><td class="num">94</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/draw_indirect.txt">ARB_draw_indirect</a></td></tr>
<tr><td class="num">95</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/draw_instanced.txt">ARB_draw_instanced</a></td></tr>
<tr><td class="num">96</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/enhanced_layouts.txt">ARB_enhanced_layouts</a></td></tr>
<tr><td class="num">97</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/explicit_attrib_location.txt">ARB_explicit_attrib_location</a></td></tr>
<tr><td class="num">98</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/explicit_uniform_location.txt">ARB_explicit_uniform_location</a></td></tr>
<tr><td class="num">99</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/fragment_coord_conventions.txt">ARB_fragment_coord_conventions</a></td></tr>
<tr><td class="num">100</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/fragment_layer_viewport.txt">ARB_fragment_layer_viewport</a></td></tr>
<tr><td class="num">101</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/fragment_program.txt">ARB_fragment_program</a></td></tr>
<tr><td class="num">102</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/fragment_program_shadow.txt">ARB_fragment_program_shadow</a></td></tr>
<tr><td class="num">103</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/fragment_shader.txt">ARB_fragment_shader</a></td></tr>
<tr><td class="num">104</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/fragment_shader_interlock.txt">ARB_fragment_shader_interlock</a></td></tr>
<tr><td class="num">105</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/framebuffer_no_attachments.txt">ARB_framebuffer_no_attachments</a></td></tr>
<tr><td class="num">106</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/framebuffer_object.txt">ARB_framebuffer_object</a></td></tr>
<tr><td class="num">107</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/framebuffer_sRGB.txt">ARB_framebuffer_sRGB</a></td></tr>
<tr><td class="num">108</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/geometry_shader4.txt">ARB_geometry_shader4</a></td></tr>
<tr><td class="num">109</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/get_program_binary.txt">ARB_get_program_binary</a></td></tr>
<tr><td class="num">110</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/get_texture_sub_image.txt">ARB_get_texture_sub_image</a></td></tr>
<tr><td class="num">111</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/gl_spirv.txt">ARB_gl_spirv</a></td></tr>
<tr><td class="num">112</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/gpu_shader5.txt">ARB_gpu_shader5</a></td></tr>
<tr><td class="num">113</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/gpu_shader_fp64.txt">ARB_gpu_shader_fp64</a></td></tr>
<tr><td class="num">114</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/gpu_shader_int64.txt">ARB_gpu_shader_int64</a></td></tr>
<tr><td class="num">115</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/half_float_pixel.txt">ARB_half_float_pixel</a></td></tr>
<tr><td class="num">116</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/half_float_vertex.txt">ARB_half_float_vertex</a></td></tr>
<tr><td class="num">117</td><td>&nbsp;</td><td>ARB_imaging</td></tr>
<tr><td class="num">118</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/indirect_parameters.txt">ARB_indirect_parameters</a></td></tr>
<tr><td class="num">119</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/instanced_arrays.txt">ARB_instanced_arrays</a></td></tr>
<tr><td class="num">120</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/internalformat_query.txt">ARB_internalformat_query</a></td></tr>
<tr><td class="num">121</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/internalformat_query2.txt">ARB_internalformat_query2</a></td></tr>
<tr><td class="num">122</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/invalidate_subdata.txt">ARB_invalidate_subdata</a></td></tr>
<tr><td class="num">123</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/map_buffer_alignment.txt">ARB_map_buffer_alignment</a></td></tr>
<tr><td class="num">124</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/map_buffer_range.txt">ARB_map_buffer_range</a></td></tr>
<tr><td class="num">125</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/ARB/matrix_palette.txt">ARB_matrix_palette</a></td></tr>
<tr><td class="num">126</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/multi_bind.txt">ARB_multi_bind</a></td></tr>
<tr><td class="num">127</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/multi_draw_indirect.txt">ARB_multi_draw_indirect</a></td></tr>
<tr><td class="num">128</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/multisample.txt">ARB_multisample</a></td></tr>
<tr><td class="num">129</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/ARB/multitexture.txt">ARB_multitexture</a></td></tr>
<tr><td class="num">130</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/occlusion_query.txt">ARB_occlusion_query</a></td></tr>
<tr><td class="num">131</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/occlusion_query2.txt">ARB_occlusion_query2</a></td></tr>
<tr><td class="num">132</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/parallel_shader_compile.txt">ARB_parallel_shader_compile</a></td></tr>
<tr><td class="num">133</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/pipeline_statistics_query.txt">ARB_pipeline_statistics_query</a></td></tr>
<tr><td class="num">134</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/pixel_buffer_object.txt">ARB_pixel_buffer_object</a></td></tr>
<tr><td class="num">135</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/point_parameters.txt">ARB_point_parameters</a></td></tr>
<tr><td class="num">136</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/point_sprite.txt">ARB_point_sprite</a></td></tr>
<tr><td class="num">137</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/post_depth_coverage.txt">ARB_post_depth_coverage</a></td></tr>
<tr><td class="num">138</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/program_interface_query.txt">ARB_program_interface_query</a></td></tr>
<tr><td class="num">139</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/provoking_vertex.txt">ARB_provoking_vertex</a></td></tr>
<tr><td class="num">140</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/query_buffer_object.txt">ARB_query_buffer_object</a></td></tr>
<tr><td class="num">141</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/robust_buffer_access_behavior.txt">ARB_robust_buffer_access_behavior</a></td></tr>
<tr><td class="num">142</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/robustness.txt">ARB_robustness</a></td></tr>
<tr><td class="num">143</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/robustness_isolation.txt">ARB_robustness_application_isolation</a></td></tr>
<tr><td class="num">144</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/robustness_isolation.txt">ARB_robustness_share_group_isolation</a></td></tr>
<tr><td class="num">145</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/sample_locations.txt">ARB_sample_locations</a></td></tr>
<tr><td class="num">146</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/sample_shading.txt">ARB_sample_shading</a></td></tr>
<tr><td class="num">147</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/sampler_objects.txt">ARB_sampler_objects</a></td></tr>
<tr><td class="num">148</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/seamless_cube_map.txt">ARB_seamless_cube_map</a></td></tr>
<tr><td class="num">149</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/seamless_cubemap_per_texture.txt">ARB_seamless_cubemap_per_texture</a></td></tr>
<tr><td class="num">150</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/separate_shader_objects.txt">ARB_separate_shader_objects</a></td></tr>
<tr><td class="num">151</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/shader_atomic_counter_ops.txt">ARB_shader_atomic_counter_ops</a></td></tr>
<tr><td class="num">152</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/shader_atomic_counters.txt">ARB_shader_atomic_counters</a></td></tr>
<tr><td class="num">153</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/shader_ballot.txt">ARB_shader_ballot</a></td></tr>
<tr><td class="num">154</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/shader_bit_encoding.txt">ARB_shader_bit_encoding</a></td></tr>
<tr><td class="num">155</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/shader_clock.txt">ARB_shader_clock</a></td></tr>
<tr><td class="num">156</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/shader_draw_parameters.txt">ARB_shader_draw_parameters</a></td></tr>
<tr><td class="num">157</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/shader_group_vote.txt">ARB_shader_group_vote</a></td></tr>
<tr><td class="num">158</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/shader_image_load_store.txt">ARB_shader_image_load_store</a></td></tr>
<tr><td class="num">159</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/shader_image_size.txt">ARB_shader_image_size</a></td></tr>
<tr><td class="num">160</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/shader_objects.txt">ARB_shader_objects</a></td></tr>
<tr><td class="num">161</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/shader_precision.txt">ARB_shader_precision</a></td></tr>
<tr><td class="num">162</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/shader_stencil_export.txt">ARB_shader_stencil_export</a></td></tr>
<tr><td class="num">163</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/shader_storage_buffer_object.txt">ARB_shader_storage_buffer_object</a></td></tr>
<tr><td class="num">164</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/shader_subroutine.txt">ARB_shader_subroutine</a></td></tr>
<tr><td class="num">165</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/shader_texture_image_samples.txt">ARB_shader_texture_image_samples</a></td></tr>
<tr><td class="num">166</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/shader_texture_lod.txt">ARB_shader_texture_lod</a></td></tr>
<tr><td class="num">167</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/shader_viewport_layer_array.txt">ARB_shader_viewport_layer_array</a></td></tr>
<tr><td class="num">168</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/shading_language_100.txt">ARB_shading_language_100</a></td></tr>
<tr><td class="num">169</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/shading_language_420pack.txt">ARB_shading_language_420pack</a></td></tr>
<tr><td class="num">170</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/shading_language_include.txt">ARB_shading_language_include</a></td></tr>
<tr><td class="num">171</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/shading_language_packing.txt">ARB_shading_language_packing</a></td></tr>
<tr><td class="num">172</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/shadow.txt">ARB_shadow</a></td></tr>
<tr><td class="num">173</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/shadow_ambient.txt">ARB_shadow_ambient</a></td></tr>
<tr><td class="num">174</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/sparse_buffer.txt">ARB_sparse_buffer</a></td></tr>
<tr><td class="num">175</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/sparse_texture.txt">ARB_sparse_texture</a></td></tr>
<tr><td class="num">176</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/sparse_texture2.txt">ARB_sparse_texture2</a></td></tr>
<tr><td class="num">177</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/sparse_texture_clamp.txt">ARB_sparse_texture_clamp</a></td></tr>
<tr><td class="num">178</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/stencil_texturing.txt">ARB_stencil_texturing</a></td></tr>
<tr><td class="num">179</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/sync.txt">ARB_sync</a></td></tr>
<tr><td class="num">180</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/tessellation_shader.txt">ARB_tessellation_shader</a></td></tr>
<tr><td class="num">181</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_barrier.txt">ARB_texture_barrier</a></td></tr>
<tr><td class="num">182</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_border_clamp.txt">ARB_texture_border_clamp</a></td></tr>
<tr><td class="num">183</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_buffer_object.txt">ARB_texture_buffer_object</a></td></tr>
<tr><td class="num">184</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_buffer_object_rgb32.txt">ARB_texture_buffer_object_rgb32</a></td></tr>
<tr><td class="num">185</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_buffer_range.txt">ARB_texture_buffer_range</a></td></tr>
<tr><td class="num">186</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_compression.txt">ARB_texture_compression</a></td></tr>
<tr><td class="num">187</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_compression_bptc.txt">ARB_texture_compression_bptc</a></td></tr>
<tr><td class="num">188</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_compression_rgtc.txt">ARB_texture_compression_rgtc</a></td></tr>
<tr><td class="num">189</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_cube_map.txt">ARB_texture_cube_map</a></td></tr>
<tr><td class="num">190</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_cube_map_array.txt">ARB_texture_cube_map_array</a></td></tr>
<tr><td class="num">191</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_env_add.txt">ARB_texture_env_add</a></td></tr>
<tr><td class="num">192</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_env_combine.txt">ARB_texture_env_combine</a></td></tr>
<tr><td class="num">193</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_env_crossbar.txt">ARB_texture_env_crossbar</a></td></tr>
<tr><td class="num">194</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_env_dot3.txt">ARB_texture_env_dot3</a></td></tr>
<tr><td class="num">195</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_filter_minmax.txt">ARB_texture_filter_minmax</a></td></tr>
<tr><td class="num">196</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_float.txt">ARB_texture_float</a></td></tr>
<tr><td class="num">197</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_gather.txt">ARB_texture_gather</a></td></tr>
<tr><td class="num">198</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_mirror_clamp_to_edge.txt">ARB_texture_mirror_clamp_to_edge</a></td></tr>
<tr><td class="num">199</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_mirrored_repeat.txt">ARB_texture_mirrored_repeat</a></td></tr>
<tr><td class="num">200</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_multisample.txt">ARB_texture_multisample</a></td></tr>
<tr><td class="num">201</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_non_power_of_two.txt">ARB_texture_non_power_of_two</a></td></tr>
<tr><td class="num">202</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_query_levels.txt">ARB_texture_query_levels</a></td></tr>
<tr><td class="num">203</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_query_lod.txt">ARB_texture_query_lod</a></td></tr>
<tr><td class="num">204</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_rectangle.txt">ARB_texture_rectangle</a></td></tr>
<tr><td class="num">205</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_rg.txt">ARB_texture_rg</a></td></tr>
<tr><td class="num">206</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_rgb10_a2ui.txt">ARB_texture_rgb10_a2ui</a></td></tr>
<tr><td class="num">207</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_stencil8.txt">ARB_texture_stencil8</a></td></tr>
<tr><td class="num">208</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_storage.txt">ARB_texture_storage</a></td></tr>
<tr><td class="num">209</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_storage_multisample.txt">ARB_texture_storage_multisample</a></td></tr>
<tr><td class="num">210</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_swizzle.txt">ARB_texture_swizzle</a></td></tr>
<tr><td class="num">211</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/texture_view.txt">ARB_texture_view</a></td></tr>
<tr><td class="num">212</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/timer_query.txt">ARB_timer_query</a></td></tr>
<tr><td class="num">213</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/transform_feedback2.txt">ARB_transform_feedback2</a></td></tr>
<tr><td class="num">214</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/transform_feedback3.txt">ARB_transform_feedback3</a></td></tr>
<tr><td class="num">215</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/transform_feedback_instanced.txt">ARB_transform_feedback_instanced</a></td></tr>
<tr><td class="num">216</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/transform_feedback_overflow_query.txt">ARB_transform_feedback_overflow_query</a></td></tr>
<tr><td class="num">217</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/transpose_matrix.txt">ARB_transpose_matrix</a></td></tr>
<tr><td class="num">218</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/uniform_buffer_object.txt">ARB_uniform_buffer_object</a></td></tr>
<tr><td class="num">219</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/vertex_array_bgra.txt">ARB_vertex_array_bgra</a></td></tr>
<tr><td class="num">220</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/vertex_array_object.txt">ARB_vertex_array_object</a></td></tr>
<tr><td class="num">221</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/vertex_attrib_64bit.txt">ARB_vertex_attrib_64bit</a></td></tr>
<tr><td class="num">222</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/vertex_attrib_binding.txt">ARB_vertex_attrib_binding</a></td></tr>
<tr><td class="num">223</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/ARB/vertex_blend.txt">ARB_vertex_blend</a></td></tr>
<tr><td class="num">224</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/vertex_buffer_object.txt">ARB_vertex_buffer_object</a></td></tr>
<tr><td class="num">225</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/vertex_program.txt">ARB_vertex_program</a></td></tr>
<tr><td class="num">226</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/vertex_shader.txt">ARB_vertex_shader</a></td></tr>
<tr><td class="num">227</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/vertex_type_10f_11f_11f_rev.txt">ARB_vertex_type_10f_11f_11f_rev</a></td></tr>
<tr><td class="num">228</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/vertex_type_2_10_10_10_rev.txt">ARB_vertex_type_2_10_10_10_rev</a></td></tr>
<tr><td class="num">229</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/viewport_array.txt">ARB_viewport_array</a></td></tr>
<tr><td class="num">230</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/window_pos.txt">ARB_window_pos</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">231</td><td>&nbsp;</td><td><a href="http://www.ati.com/developer/atiopengl.pdf">ATIX_point_sprites</a></td></tr>
<tr><td class="num">232</td><td>&nbsp;</td><td><a href="http://www.ati.com/developer/atiopengl.pdf">ATIX_texture_env_combine3</a></td></tr>
<tr><td class="num">233</td><td>&nbsp;</td><td><a href="http://www.ati.com/developer/sdk/RadeonSDK/Html/Info/ATIX_texture_env_route.txt">ATIX_texture_env_route</a></td></tr>
<tr><td class="num">234</td><td>&nbsp;</td><td><a href="http://www.ati.com/developer/atiopengl.pdf">ATIX_vertex_shader_output_point_size</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">235</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ATI/draw_buffers.txt">ATI_draw_buffers</a></td></tr>
<tr><td class="num">236</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ATI/element_array.txt">ATI_element_array</a></td></tr>
<tr><td class="num">237</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/ATI/envmap_bumpmap.txt">ATI_envmap_bumpmap</a></td></tr>
<tr><td class="num">238</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ATI/fragment_shader.txt">ATI_fragment_shader</a></td></tr>
<tr><td class="num">239</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ATI/map_object_buffer.txt">ATI_map_object_buffer</a></td></tr>
<tr><td class="num">240</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ATI/meminfo.txt">ATI_meminfo</a></td></tr>
<tr><td class="num">241</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ATI/pn_triangles.txt">ATI_pn_triangles</a></td></tr>
<tr><td class="num">242</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ATI/separate_stencil.txt">ATI_separate_stencil</a></td></tr>
<tr><td class="num">243</td><td>&nbsp;</td><td>ATI_shader_texture_lod</td></tr>
<tr><td class="num">244</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ATI/text_fragment_shader.txt">ATI_text_fragment_shader</a></td></tr>
<tr><td class="num">245</td><td>&nbsp;</td><td>ATI_texture_compression_3dc</td></tr>
<tr><td class="num">246</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ATI/texture_env_combine3.txt">ATI_texture_env_combine3</a></td></tr>
<tr><td class="num">247</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ATI/texture_float.txt">ATI_texture_float</a></td></tr>
<tr><td class="num">248</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ATI/texture_mirror_once.txt">ATI_texture_mirror_once</a></td></tr>
<tr><td class="num">249</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ATI/vertex_array_object.txt">ATI_vertex_array_object</a></td></tr>
<tr><td class="num">250</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ATI/vertex_attrib_array_object.txt">ATI_vertex_attrib_array_object</a></td></tr>
<tr><td class="num">251</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ATI/vertex_streams.txt">ATI_vertex_streams</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">252</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/robustness_video_memory_purge.txt">EGL_NV_robustness_video_memory_purge</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">253</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/422_pixels.txt">EXT_422_pixels</a></td></tr>
<tr><td class="num">254</td><td>&nbsp;</td><td><a href="http://download.nvidia.com/developer/GLSL/GLSL%20Release%20Notes%20for%20Release%2060.pdf">EXT_Cg_shader</a></td></tr>
<tr><td class="num">255</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/abgr.txt">EXT_abgr</a></td></tr>
<tr><td class="num">256</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/bgra.txt">EXT_bgra</a></td></tr>
<tr><td class="num">257</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_bindable_uniform.txt">EXT_bindable_uniform</a></td></tr>
<tr><td class="num">258</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/blend_color.txt">EXT_blend_color</a></td></tr>
<tr><td class="num">259</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/blend_equation_separate.txt">EXT_blend_equation_separate</a></td></tr>
<tr><td class="num">260</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/blend_func_separate.txt">EXT_blend_func_separate</a></td></tr>
<tr><td class="num">261</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/blend_logic_op.txt">EXT_blend_logic_op</a></td></tr>
<tr><td class="num">262</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/blend_minmax.txt">EXT_blend_minmax</a></td></tr>
<tr><td class="num">263</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/blend_subtract.txt">EXT_blend_subtract</a></td></tr>
<tr><td class="num">264</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/clip_volume_hint.txt">EXT_clip_volume_hint</a></td></tr>
<tr><td class="num">265</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/cmyka.txt">EXT_cmyka</a></td></tr>
<tr><td class="num">266</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/color_subtable.txt">EXT_color_subtable</a></td></tr>
<tr><td class="num">267</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/compiled_vertex_array.txt">EXT_compiled_vertex_array</a></td></tr>
<tr><td class="num">268</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/convolution.txt">EXT_convolution</a></td></tr>
<tr><td class="num">269</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/coordinate_frame.txt">EXT_coordinate_frame</a></td></tr>
<tr><td class="num">270</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/copy_texture.txt">EXT_copy_texture</a></td></tr>
<tr><td class="num">271</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/cull_vertex.txt">EXT_cull_vertex</a></td></tr>
<tr><td class="num">272</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/EXT_debug_label.txt">EXT_debug_label</a></td></tr>
<tr><td class="num">273</td><td>&nbsp;</td><td><a href="http://www.khronos.org/registry/gles/extensions/EXT/EXT_debug_marker.txt">EXT_debug_marker</a></td></tr>
<tr><td class="num">274</td><td>&nbsp;</td><td><a href="http://www.nvidia.com/dev_content/nvopenglspecs/GL_EXT_depth_bounds_test.txt">EXT_depth_bounds_test</a></td></tr>
<tr><td class="num">275</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/direct_state_access.txt">EXT_direct_state_access</a></td></tr>
<tr><td class="num">276</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/draw_buffers2.txt">EXT_draw_buffers2</a></td></tr>
<tr><td class="num">277</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_draw_instanced.txt">EXT_draw_instanced</a></td></tr>
<tr><td class="num">278</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/EXT/draw_range_elements.txt">EXT_draw_range_elements</a></td></tr>
<tr><td class="num">279</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/EXT/fog_coord.txt">EXT_fog_coord</a></td></tr>
<tr><td class="num">280</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/fragment_lighting.txt">EXT_fragment_lighting</a></td></tr>
<tr><td class="num">281</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/framebuffer_blit.txt">EXT_framebuffer_blit</a></td></tr>
<tr><td class="num">282</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/framebuffer_multisample.txt">EXT_framebuffer_multisample</a></td></tr>
<tr><td class="num">283</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/framebuffer_multisample_blit_scaled.txt">EXT_framebuffer_multisample_blit_scaled</a></td></tr>
<tr><td class="num">284</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/framebuffer_object.txt">EXT_framebuffer_object</a></td></tr>
<tr><td class="num">285</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_framebuffer_sRGB.txt">EXT_framebuffer_sRGB</a></td></tr>
<tr><td class="num">286</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_geometry_shader4.txt">EXT_geometry_shader4</a></td></tr>
<tr><td class="num">287</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_gpu_program_parameters.txt">EXT_gpu_program_parameters</a></td></tr>
<tr><td class="num">288</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_gpu_shader4.txt">EXT_gpu_shader4</a></td></tr>
<tr><td class="num">289</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/histogram.txt">EXT_histogram</a></td></tr>
<tr><td class="num">290</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/index_array_formats.txt">EXT_index_array_formats</a></td></tr>
<tr><td class="num">291</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/index_func.txt">EXT_index_func</a></td></tr>
<tr><td class="num">292</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/index_material.txt">EXT_index_material</a></td></tr>
<tr><td class="num">293</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/index_texture.txt">EXT_index_texture</a></td></tr>
<tr><td class="num">294</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/light_texture.txt">EXT_light_texture</a></td></tr>
<tr><td class="num">295</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/misc_attribute.txt">EXT_misc_attribute</a></td></tr>
<tr><td class="num">296</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/multi_draw_arrays.txt">EXT_multi_draw_arrays</a></td></tr>
<tr><td class="num">297</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/wgl_multisample.txt">EXT_multisample</a></td></tr>
<tr><td class="num">298</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/packed_depth_stencil.txt">EXT_packed_depth_stencil</a></td></tr>
<tr><td class="num">299</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_packed_float.txt">EXT_packed_float</a></td></tr>
<tr><td class="num">300</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/packed_pixels.txt">EXT_packed_pixels</a></td></tr>
<tr><td class="num">301</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/paletted_texture.txt">EXT_paletted_texture</a></td></tr>
<tr><td class="num">302</td><td>&nbsp;</td><td><a href="http://www.nvidia.com/dev_content/nvopenglspecs/GL_EXT_pixel_buffer_object.txt">EXT_pixel_buffer_object</a></td></tr>
<tr><td class="num">303</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/pixel_transform.txt">EXT_pixel_transform</a></td></tr>
<tr><td class="num">304</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/pixel_transform_color_table.txt">EXT_pixel_transform_color_table</a></td></tr>
<tr><td class="num">305</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/point_parameters.txt">EXT_point_parameters</a></td></tr>
<tr><td class="num">306</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/polygon_offset.txt">EXT_polygon_offset</a></td></tr>
<tr><td class="num">307</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/polygon_offset_clamp.txt">EXT_polygon_offset_clamp</a></td></tr>
<tr><td class="num">308</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/post_depth_coverage.txt">EXT_post_depth_coverage</a></td></tr>
<tr><td class="num">309</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/provoking_vertex.txt">EXT_provoking_vertex</a></td></tr>
<tr><td class="num">310</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/framebuffer_mixed_samples.txt">EXT_raster_multisample</a></td></tr>
<tr><td class="num">311</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/rescale_normal.txt">EXT_rescale_normal</a></td></tr>
<tr><td class="num">312</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/scene_marker.txt">EXT_scene_marker</a></td></tr>
<tr><td class="num">313</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/EXT/secondary_color.txt">EXT_secondary_color</a></td></tr>
<tr><td class="num">314</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/separate_shader_objects.txt">EXT_separate_shader_objects</a></td></tr>
<tr><td class="num">315</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/separate_specular_color.txt">EXT_separate_specular_color</a></td></tr>
<tr><td class="num">316</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/shader_image_load_formatted.txt">EXT_shader_image_load_formatted</a></td></tr>
<tr><td class="num">317</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/shader_image_load_store.txt">EXT_shader_image_load_store</a></td></tr>
<tr><td class="num">318</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/shader_integer_mix.txt">EXT_shader_integer_mix</a></td></tr>
<tr><td class="num">319</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/shadow_funcs.txt">EXT_shadow_funcs</a></td></tr>
<tr><td class="num">320</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/shared_texture_palette.txt">EXT_shared_texture_palette</a></td></tr>
<tr><td class="num">321</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/sparse_texture2.txt">EXT_sparse_texture2</a></td></tr>
<tr><td class="num">322</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/stencil_clear_tag.txt">EXT_stencil_clear_tag</a></td></tr>
<tr><td class="num">323</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/stencil_two_side.txt">EXT_stencil_two_side</a></td></tr>
<tr><td class="num">324</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/stencil_wrap.txt">EXT_stencil_wrap</a></td></tr>
<tr><td class="num">325</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/subtexture.txt">EXT_subtexture</a></td></tr>
<tr><td class="num">326</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/texture.txt">EXT_texture</a></td></tr>
<tr><td class="num">327</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/texture3D.txt">EXT_texture3D</a></td></tr>
<tr><td class="num">328</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_array.txt">EXT_texture_array</a></td></tr>
<tr><td class="num">329</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_buffer_object.txt">EXT_texture_buffer_object</a></td></tr>
<tr><td class="num">330</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/texture_compression_dxt1.txt">EXT_texture_compression_dxt1</a></td></tr>
<tr><td class="num">331</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_compression_latc.txt">EXT_texture_compression_latc</a></td></tr>
<tr><td class="num">332</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_compression_rgtc.txt">EXT_texture_compression_rgtc</a></td></tr>
<tr><td class="num">333</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/texture_compression_s3tc.txt">EXT_texture_compression_s3tc</a></td></tr>
<tr><td class="num">334</td><td>&nbsp;</td><td><a href="http://www.nvidia.com/dev_content/nvopenglspecs/GL_EXT_texture_cube_map.txt">EXT_texture_cube_map</a></td></tr>
<tr><td class="num">335</td><td>&nbsp;</td><td><a href="http://www.opengl.org/developers/documentation/Version1.2/1.2specs/texture_edge_clamp.txt">EXT_texture_edge_clamp</a></td></tr>
<tr><td class="num">336</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/texture_env.txt">EXT_texture_env</a></td></tr>
<tr><td class="num">337</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/texture_env_add.txt">EXT_texture_env_add</a></td></tr>
<tr><td class="num">338</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/texture_env_combine.txt">EXT_texture_env_combine</a></td></tr>
<tr><td class="num">339</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/texture_env_dot3.txt">EXT_texture_env_dot3</a></td></tr>
<tr><td class="num">340</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/texture_filter_anisotropic.txt">EXT_texture_filter_anisotropic</a></td></tr>
<tr><td class="num">341</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/texture_filter_minmax.txt">EXT_texture_filter_minmax</a></td></tr>
<tr><td class="num">342</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_integer.txt">EXT_texture_integer</a></td></tr>
<tr><td class="num">343</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/texture_lod_bias.txt">EXT_texture_lod_bias</a></td></tr>
<tr><td class="num">344</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/texture_mirror_clamp.txt">EXT_texture_mirror_clamp</a></td></tr>
<tr><td class="num">345</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/texture_object.txt">EXT_texture_object</a></td></tr>
<tr><td class="num">346</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/texture_perturb_normal.txt">EXT_texture_perturb_normal</a></td></tr>
<tr><td class="num">347</td><td>&nbsp;</td><td><a href="http://developer.apple.com/opengl/extensions/ext_texture_rectangle.html">EXT_texture_rectangle</a></td></tr>
<tr><td class="num">348</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/texture_sRGB.txt">EXT_texture_sRGB</a></td></tr>
<tr><td class="num">349</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/texture_sRGB_decode.txt">EXT_texture_sRGB_decode</a></td></tr>
<tr><td class="num">350</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_texture_shared_exponent.txt">EXT_texture_shared_exponent</a></td></tr>
<tr><td class="num">351</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/texture_snorm.txt">EXT_texture_snorm</a></td></tr>
<tr><td class="num">352</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/texture_swizzle.txt">EXT_texture_swizzle</a></td></tr>
<tr><td class="num">353</td><td>&nbsp;</td><td><a href="http://www.nvidia.com/dev_content/nvopenglspecs/GL_EXT_timer_query.txt">EXT_timer_query</a></td></tr>
<tr><td class="num">354</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/transform_feedback.txt">EXT_transform_feedback</a></td></tr>
<tr><td class="num">355</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/vertex_array.txt">EXT_vertex_array</a></td></tr>
<tr><td class="num">356</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/vertex_array_bgra.txt">EXT_vertex_array_bgra</a></td></tr>
<tr><td class="num">357</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/vertex_attrib_64bit.txt">EXT_vertex_attrib_64bit</a></td></tr>
<tr><td class="num">358</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/EXT/vertex_shader.txt">EXT_vertex_shader</a></td></tr>
<tr><td class="num">359</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/vertex_weighting.txt">EXT_vertex_weighting</a></td></tr>
<tr><td class="num">360</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/window_rectangles.txt">EXT_window_rectangles</a></td></tr>
<tr><td class="num">361</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/x11_sync_object.txt">EXT_x11_sync_object</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">362</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/GREMEDY/frame_terminator.txt">GREMEDY_frame_terminator</a></td></tr>
<tr><td class="num">363</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/GREMEDY/string_marker.txt">GREMEDY_string_marker</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">364</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/HP/convolution_border_modes.txt">HP_convolution_border_modes</a></td></tr>
<tr><td class="num">365</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/HP/image_transform.txt">HP_image_transform</a></td></tr>
<tr><td class="num">366</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/HP/occlusion_test.txt">HP_occlusion_test</a></td></tr>
<tr><td class="num">367</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/HP/texture_lighting.txt">HP_texture_lighting</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">368</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/IBM/cull_vertex.txt">IBM_cull_vertex</a></td></tr>
<tr><td class="num">369</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/IBM/multimode_draw_arrays.txt">IBM_multimode_draw_arrays</a></td></tr>
<tr><td class="num">370</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/IBM/rasterpos_clip.txt">IBM_rasterpos_clip</a></td></tr>
<tr><td class="num">371</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/IBM/static_data.txt">IBM_static_data</a></td></tr>
<tr><td class="num">372</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/IBM/texture_mirrored_repeat.txt">IBM_texture_mirrored_repeat</a></td></tr>
<tr><td class="num">373</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/IBM/vertex_array_lists.txt">IBM_vertex_array_lists</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">374</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/INGR/color_clamp.txt">INGR_color_clamp</a></td></tr>
<tr><td class="num">375</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/INGR/interlace_read.txt">INGR_interlace_read</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">376</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/INTEL/conservative_rasterization.txt">INTEL_conservative_rasterization</a></td></tr>
<tr><td class="num">377</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/INTEL/fragment_shader_ordering.txt">INTEL_fragment_shader_ordering</a></td></tr>
<tr><td class="num">378</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/INTEL/framebuffer_CMAA.txt">INTEL_framebuffer_CMAA</a></td></tr>
<tr><td class="num">379</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/INTEL/map_texture.txt">INTEL_map_texture</a></td></tr>
<tr><td class="num">380</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/INTEL/parallel_arrays.txt">INTEL_parallel_arrays</a></td></tr>
<tr><td class="num">381</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/INTEL/performance_query.txt">INTEL_performance_query</a></td></tr>
<tr><td class="num">382</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/INTEL/texture_scissor.txt">INTEL_texture_scissor</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">383</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/KHR/blend_equation_advanced.txt">KHR_blend_equation_advanced</a></td></tr>
<tr><td class="num">384</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/KHR/blend_equation_advanced.txt">KHR_blend_equation_advanced_coherent</a></td></tr>
<tr><td class="num">385</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/KHR/context_flush_control.txt">KHR_context_flush_control</a></td></tr>
<tr><td class="num">386</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/KHR/debug.txt">KHR_debug</a></td></tr>
<tr><td class="num">387</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/KHR/no_error.txt">KHR_no_error</a></td></tr>
<tr><td class="num">388</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/KHR/robust_buffer_access_behavior.txt">KHR_robust_buffer_access_behavior</a></td></tr>
<tr><td class="num">389</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/KHR/robustness.txt">KHR_robustness</a></td></tr>
<tr><td class="num">390</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/KHR/texture_compression_astc_hdr.txt">KHR_texture_compression_astc_hdr</a></td></tr>
<tr><td class="num">391</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/KHR/texture_compression_astc_hdr.txt">KHR_texture_compression_astc_ldr</a></td></tr>
<tr><td class="num">392</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/KHR/texture_compression_astc_sliced_3d.txt">KHR_texture_compression_astc_sliced_3d</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">393</td><td>&nbsp;</td><td>KTX_buffer_region</td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">394</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/MESAX/texture_stack.txt">MESAX_texture_stack</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">395</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/MESA/pack_invert.txt">MESA_pack_invert</a></td></tr>
<tr><td class="num">396</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/MESA/resize_buffers.txt">MESA_resize_buffers</a></td></tr>
<tr><td class="num">397</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/MESA/shader_integer_functions.txt">MESA_shader_integer_functions</a></td></tr>
<tr><td class="num">398</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/MESA/window_pos.txt">MESA_window_pos</a></td></tr>
<tr><td class="num">399</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/MESA/ycbcr_texture.txt">MESA_ycbcr_texture</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">400</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NVX/nvx_blend_equation_advanced_multi_draw_buffers.txt">NVX_blend_equation_advanced_multi_draw_buffers</a></td></tr>
<tr><td class="num">401</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NVX/nvx_conditional_render.txt">NVX_conditional_render</a></td></tr>
<tr><td class="num">402</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NVX_gpu_memory_info.txt">NVX_gpu_memory_info</a></td></tr>
<tr><td class="num">403</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NVX/nvx_linked_gpu_multicast.txt">NVX_linked_gpu_multicast</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">404</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/bindless_multi_draw_indirect.txt">NV_bindless_multi_draw_indirect</a></td></tr>
<tr><td class="num">405</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/bindless_multi_draw_indirect_count.txt">NV_bindless_multi_draw_indirect_count</a></td></tr>
<tr><td class="num">406</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/bindless_texture.txt">NV_bindless_texture</a></td></tr>
<tr><td class="num">407</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/blend_equation_advanced.txt">NV_blend_equation_advanced</a></td></tr>
<tr><td class="num">408</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/blend_equation_advanced.txt">NV_blend_equation_advanced_coherent</a></td></tr>
<tr><td class="num">409</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/blend_square.txt">NV_blend_square</a></td></tr>
<tr><td class="num">410</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/clip_space_w_scaling.txt">NV_clip_space_w_scaling</a></td></tr>
<tr><td class="num">411</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/command_list.txt">NV_command_list</a></td></tr>
<tr><td class="num">412</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/compute_program5.txt">NV_compute_program5</a></td></tr>
<tr><td class="num">413</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/conditional_render.txt">NV_conditional_render</a></td></tr>
<tr><td class="num">414</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/conservative_raster.txt">NV_conservative_raster</a></td></tr>
<tr><td class="num">415</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/conservative_raster_dilate.txt">NV_conservative_raster_dilate</a></td></tr>
<tr><td class="num">416</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/conservative_raster_pre_snap_triangles.txt">NV_conservative_raster_pre_snap_triangles</a></td></tr>
<tr><td class="num">417</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/copy_depth_to_color.txt">NV_copy_depth_to_color</a></td></tr>
<tr><td class="num">418</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/copy_image.txt">NV_copy_image</a></td></tr>
<tr><td class="num">419</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/deep_texture3D.txt">NV_deep_texture3D</a></td></tr>
<tr><td class="num">420</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NV_depth_buffer_float.txt">NV_depth_buffer_float</a></td></tr>
<tr><td class="num">421</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/depth_clamp.txt">NV_depth_clamp</a></td></tr>
<tr><td class="num">422</td><td>&nbsp;</td><td>NV_depth_range_unclamped</td></tr>
<tr><td class="num">423</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/draw_texture.txt">NV_draw_texture</a></td></tr>
<tr><td class="num">424</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/draw_vulkan_image.txt">NV_draw_vulkan_image</a></td></tr>
<tr><td class="num">425</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/evaluators.txt">NV_evaluators</a></td></tr>
<tr><td class="num">426</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/explicit_multisample.txt">NV_explicit_multisample</a></td></tr>
<tr><td class="num">427</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/fence.txt">NV_fence</a></td></tr>
<tr><td class="num">428</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/fill_rectangle.txt">NV_fill_rectangle</a></td></tr>
<tr><td class="num">429</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/float_buffer.txt">NV_float_buffer</a></td></tr>
<tr><td class="num">430</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/fog_distance.txt">NV_fog_distance</a></td></tr>
<tr><td class="num">431</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/fragment_coverage_to_color.txt">NV_fragment_coverage_to_color</a></td></tr>
<tr><td class="num">432</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/fragment_program.txt">NV_fragment_program</a></td></tr>
<tr><td class="num">433</td><td>&nbsp;</td><td><a href="http://www.nvidia.com/dev_content/nvopenglspecs/GL_NV_fragment_program2.txt">NV_fragment_program2</a></td></tr>
<tr><td class="num">434</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NV_fragment_program4.txt">NV_fragment_program4</a></td></tr>
<tr><td class="num">435</td><td>&nbsp;</td><td><a href="http://www.nvidia.com/dev_content/nvopenglspecs/GL_NV_fragment_program_option.txt">NV_fragment_program_option</a></td></tr>
<tr><td class="num">436</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/fragment_shader_interlock.txt">NV_fragment_shader_interlock</a></td></tr>
<tr><td class="num">437</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/framebuffer_mixed_samples.txt">NV_framebuffer_mixed_samples</a></td></tr>
<tr><td class="num">438</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NV_framebuffer_multisample_coverage.txt">NV_framebuffer_multisample_coverage</a></td></tr>
<tr><td class="num">439</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NV_geometry_program4.txt">NV_geometry_program4</a></td></tr>
<tr><td class="num">440</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NV_geometry_shader4.txt">NV_geometry_shader4</a></td></tr>
<tr><td class="num">441</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/geometry_shader_passthrough.txt">NV_geometry_shader_passthrough</a></td></tr>
<tr><td class="num">442</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/gpu_multicast.txt">NV_gpu_multicast</a></td></tr>
<tr><td class="num">443</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NV_gpu_program4.txt">NV_gpu_program4</a></td></tr>
<tr><td class="num">444</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/gpu_program5.txt">NV_gpu_program5</a></td></tr>
<tr><td class="num">445</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/gpu_program5_mem_extended.txt">NV_gpu_program5_mem_extended</a></td></tr>
<tr><td class="num">446</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/gpu_program5.txt">NV_gpu_program_fp64</a></td></tr>
<tr><td class="num">447</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/gpu_shader5.txt">NV_gpu_shader5</a></td></tr>
<tr><td class="num">448</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/half_float.txt">NV_half_float</a></td></tr>
<tr><td class="num">449</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/internalformat_sample_query.txt">NV_internalformat_sample_query</a></td></tr>
<tr><td class="num">450</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/light_max_exponent.txt">NV_light_max_exponent</a></td></tr>
<tr><td class="num">451</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/multisample_coverage.txt">NV_multisample_coverage</a></td></tr>
<tr><td class="num">452</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/multisample_filter_hint.txt">NV_multisample_filter_hint</a></td></tr>
<tr><td class="num">453</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/occlusion_query.txt">NV_occlusion_query</a></td></tr>
<tr><td class="num">454</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/packed_depth_stencil.txt">NV_packed_depth_stencil</a></td></tr>
<tr><td class="num">455</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NV_parameter_buffer_object.txt">NV_parameter_buffer_object</a></td></tr>
<tr><td class="num">456</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/parameter_buffer_object2.txt">NV_parameter_buffer_object2</a></td></tr>
<tr><td class="num">457</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/path_rendering.txt">NV_path_rendering</a></td></tr>
<tr><td class="num">458</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/path_rendering_shared_edge.txt">NV_path_rendering_shared_edge</a></td></tr>
<tr><td class="num">459</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/pixel_data_range.txt">NV_pixel_data_range</a></td></tr>
<tr><td class="num">460</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/point_sprite.txt">NV_point_sprite</a></td></tr>
<tr><td class="num">461</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/present_video.txt">NV_present_video</a></td></tr>
<tr><td class="num">462</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/primitive_restart.txt">NV_primitive_restart</a></td></tr>
<tr><td class="num">463</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/register_combiners.txt">NV_register_combiners</a></td></tr>
<tr><td class="num">464</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/register_combiners2.txt">NV_register_combiners2</a></td></tr>
<tr><td class="num">465</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/robustness_video_memory_purge.txt">NV_robustness_video_memory_purge</a></td></tr>
<tr><td class="num">466</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/sample_locations.txt">NV_sample_locations</a></td></tr>
<tr><td class="num">467</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/sample_mask_override_coverage.txt">NV_sample_mask_override_coverage</a></td></tr>
<tr><td class="num">468</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/shader_atomic_counters.txt">NV_shader_atomic_counters</a></td></tr>
<tr><td class="num">469</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/shader_atomic_float.txt">NV_shader_atomic_float</a></td></tr>
<tr><td class="num">470</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/shader_atomic_float64.txt">NV_shader_atomic_float64</a></td></tr>
<tr><td class="num">471</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/shader_atomic_fp16_vector.txt">NV_shader_atomic_fp16_vector</a></td></tr>
<tr><td class="num">472</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/shader_atomic_int64.txt">NV_shader_atomic_int64</a></td></tr>
<tr><td class="num">473</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/shader_buffer_load.txt">NV_shader_buffer_load</a></td></tr>
<tr><td class="num">474</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/shader_storage_buffer_object.txt">NV_shader_storage_buffer_object</a></td></tr>
<tr><td class="num">475</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/shader_thread_group.txt">NV_shader_thread_group</a></td></tr>
<tr><td class="num">476</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/shader_thread_shuffle.txt">NV_shader_thread_shuffle</a></td></tr>
<tr><td class="num">477</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/stereo_view_rendering.txt">NV_stereo_view_rendering</a></td></tr>
<tr><td class="num">478</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/tessellation_program5.txt">NV_tessellation_program5</a></td></tr>
<tr><td class="num">479</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/texgen_emboss.txt">NV_texgen_emboss</a></td></tr>
<tr><td class="num">480</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/texgen_reflection.txt">NV_texgen_reflection</a></td></tr>
<tr><td class="num">481</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/texture_barrier.txt">NV_texture_barrier</a></td></tr>
<tr><td class="num">482</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/texture_compression_vtc.txt">NV_texture_compression_vtc</a></td></tr>
<tr><td class="num">483</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/texture_env_combine4.txt">NV_texture_env_combine4</a></td></tr>
<tr><td class="num">484</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/texture_expand_normal.txt">NV_texture_expand_normal</a></td></tr>
<tr><td class="num">485</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/texture_multisample.txt">NV_texture_multisample</a></td></tr>
<tr><td class="num">486</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/texture_rectangle.txt">NV_texture_rectangle</a></td></tr>
<tr><td class="num">487</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/texture_shader.txt">NV_texture_shader</a></td></tr>
<tr><td class="num">488</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/texture_shader2.txt">NV_texture_shader2</a></td></tr>
<tr><td class="num">489</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/texture_shader3.txt">NV_texture_shader3</a></td></tr>
<tr><td class="num">490</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NV_transform_feedback.txt">NV_transform_feedback</a></td></tr>
<tr><td class="num">491</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/transform_feedback2.txt">NV_transform_feedback2</a></td></tr>
<tr><td class="num">492</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/uniform_buffer_unified_memory.txt">NV_uniform_buffer_unified_memory</a></td></tr>
<tr><td class="num">493</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/vdpau_interop.txt">NV_vdpau_interop</a></td></tr>
<tr><td class="num">494</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/vertex_array_range.txt">NV_vertex_array_range</a></td></tr>
<tr><td class="num">495</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/vertex_array_range2.txt">NV_vertex_array_range2</a></td></tr>
<tr><td class="num">496</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/vertex_attrib_integer_64bit.txt">NV_vertex_attrib_integer_64bit</a></td></tr>
<tr><td class="num">497</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/vertex_buffer_unified_memory.txt">NV_vertex_buffer_unified_memory</a></td></tr>
<tr><td class="num">498</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/vertex_program.txt">NV_vertex_program</a></td></tr>
<tr><td class="num">499</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/vertex_program1_1.txt">NV_vertex_program1_1</a></td></tr>
<tr><td class="num">500</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/vertex_program2.txt">NV_vertex_program2</a></td></tr>
<tr><td class="num">501</td><td>&nbsp;</td><td><a href="http://www.nvidia.com/dev_content/nvopenglspecs/GL_NV_vertex_program2_option.txt">NV_vertex_program2_option</a></td></tr>
<tr><td class="num">502</td><td>&nbsp;</td><td><a href="http://www.nvidia.com/dev_content/nvopenglspecs/GL_NV_vertex_program3.txt">NV_vertex_program3</a></td></tr>
<tr><td class="num">503</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_NV_vertex_program4.txt">NV_vertex_program4</a></td></tr>
<tr><td class="num">504</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/video_capture.txt">NV_video_capture</a></td></tr>
<tr><td class="num">505</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/viewport_array2.txt">NV_viewport_array2</a></td></tr>
<tr><td class="num">506</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/viewport_swizzle.txt">NV_viewport_swizzle</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">507</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/OES/OES_byte_coordinates.txt">OES_byte_coordinates</a></td></tr>
<tr><td class="num">508</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/OES/OES_compressed_paletted_texture.txt">OES_compressed_paletted_texture</a></td></tr>
<tr><td class="num">509</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/OES/OES_read_format.txt">OES_read_format</a></td></tr>
<tr><td class="num">510</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/OES/OES_single_precision.txt">OES_single_precision</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">511</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/OML/interlace.txt">OML_interlace</a></td></tr>
<tr><td class="num">512</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/OML/resample.txt">OML_resample</a></td></tr>
<tr><td class="num">513</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/OML/subsample.txt">OML_subsample</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">514</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/OVR/multiview.txt">OVR_multiview</a></td></tr>
<tr><td class="num">515</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/OVR/multiview2.txt">OVR_multiview2</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">516</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/PGI/misc_hints.txt">PGI_misc_hints</a></td></tr>
<tr><td class="num">517</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/PGI/vertex_hints.txt">PGI_vertex_hints</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">518</td><td>&nbsp;</td><td><a href="https://github.com/p3/regal/tree/master/doc/extensions">REGAL_ES1_0_compatibility</a></td></tr>
<tr><td class="num">519</td><td>&nbsp;</td><td><a href="https://github.com/p3/regal/tree/master/doc/extensions">REGAL_ES1_1_compatibility</a></td></tr>
<tr><td class="num">520</td><td>&nbsp;</td><td><a href="https://github.com/p3/regal/tree/master/doc/extensions">REGAL_enable</a></td></tr>
<tr><td class="num">521</td><td>&nbsp;</td><td><a href="https://github.com/p3/regal/tree/master/doc/extensions">REGAL_error_string</a></td></tr>
<tr><td class="num">522</td><td>&nbsp;</td><td><a href="https://github.com/p3/regal/tree/master/doc/extensions">REGAL_extension_query</a></td></tr>
<tr><td class="num">523</td><td>&nbsp;</td><td><a href="https://github.com/p3/regal/tree/master/doc/extensions">REGAL_log</a></td></tr>
<tr><td class="num">524</td><td>&nbsp;</td><td><a href="https://github.com/p3/regal/tree/master/doc/extensions">REGAL_proc_address</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">525</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/REND/screen_coordinates.txt">REND_screen_coordinates</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">526</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/S3/s3tc.txt">S3_s3tc</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">527</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIS/color_range.txt">SGIS_color_range</a></td></tr>
<tr><td class="num">528</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIS/detail_texture.txt">SGIS_detail_texture</a></td></tr>
<tr><td class="num">529</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIS/fog_func.txt">SGIS_fog_function</a></td></tr>
<tr><td class="num">530</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIS/generate_mipmap.txt">SGIS_generate_mipmap</a></td></tr>
<tr><td class="num">531</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIS/multisample.txt">SGIS_multisample</a></td></tr>
<tr><td class="num">532</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIS/pixel_texture.txt">SGIS_pixel_texture</a></td></tr>
<tr><td class="num">533</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIS/point_line_texgen.txt">SGIS_point_line_texgen</a></td></tr>
<tr><td class="num">534</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIS/sharpen_texture.txt">SGIS_sharpen_texture</a></td></tr>
<tr><td class="num">535</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIS/texture4D.txt">SGIS_texture4D</a></td></tr>
<tr><td class="num">536</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIS/texture_border_clamp.txt">SGIS_texture_border_clamp</a></td></tr>
<tr><td class="num">537</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIS/texture_edge_clamp.txt">SGIS_texture_edge_clamp</a></td></tr>
<tr><td class="num">538</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIS/texture_filter4.txt">SGIS_texture_filter4</a></td></tr>
<tr><td class="num">539</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIS/texture_lod.txt">SGIS_texture_lod</a></td></tr>
<tr><td class="num">540</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIS/texture_select.txt">SGIS_texture_select</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">541</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/async.txt">SGIX_async</a></td></tr>
<tr><td class="num">542</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/async_histogram.txt">SGIX_async_histogram</a></td></tr>
<tr><td class="num">543</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/async_pixel.txt">SGIX_async_pixel</a></td></tr>
<tr><td class="num">544</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/blend_alpha_minmax.txt">SGIX_blend_alpha_minmax</a></td></tr>
<tr><td class="num">545</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/clipmap.txt">SGIX_clipmap</a></td></tr>
<tr><td class="num">546</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/convolution_accuracy.txt">SGIX_convolution_accuracy</a></td></tr>
<tr><td class="num">547</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/depth_texture.txt">SGIX_depth_texture</a></td></tr>
<tr><td class="num">548</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/flush_raster.txt">SGIX_flush_raster</a></td></tr>
<tr><td class="num">549</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/fog_offset.txt">SGIX_fog_offset</a></td></tr>
<tr><td class="num">550</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/fog_texture.txt">SGIX_fog_texture</a></td></tr>
<tr><td class="num">551</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/fragment_specular_lighting.txt">SGIX_fragment_specular_lighting</a></td></tr>
<tr><td class="num">552</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/framezoom.txt">SGIX_framezoom</a></td></tr>
<tr><td class="num">553</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/interlace.txt">SGIX_interlace</a></td></tr>
<tr><td class="num">554</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/ir_instrument1.txt">SGIX_ir_instrument1</a></td></tr>
<tr><td class="num">555</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/list_priority.txt">SGIX_list_priority</a></td></tr>
<tr><td class="num">556</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/sgix_pixel_texture.txt">SGIX_pixel_texture</a></td></tr>
<tr><td class="num">557</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/pixel_texture_bits.txt">SGIX_pixel_texture_bits</a></td></tr>
<tr><td class="num">558</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/reference_plane.txt">SGIX_reference_plane</a></td></tr>
<tr><td class="num">559</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/resample.txt">SGIX_resample</a></td></tr>
<tr><td class="num">560</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/SGIX/shadow.txt">SGIX_shadow</a></td></tr>
<tr><td class="num">561</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/shadow_ambient.txt">SGIX_shadow_ambient</a></td></tr>
<tr><td class="num">562</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/sprite.txt">SGIX_sprite</a></td></tr>
<tr><td class="num">563</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/tag_sample_buffer.txt">SGIX_tag_sample_buffer</a></td></tr>
<tr><td class="num">564</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/texture_env_add.txt">SGIX_texture_add_env</a></td></tr>
<tr><td class="num">565</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/texture_coordinate_clamp.txt">SGIX_texture_coordinate_clamp</a></td></tr>
<tr><td class="num">566</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/texture_lod_bias.txt">SGIX_texture_lod_bias</a></td></tr>
<tr><td class="num">567</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/texture_multi_buffer.txt">SGIX_texture_multi_buffer</a></td></tr>
<tr><td class="num">568</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/texture_range.txt">SGIX_texture_range</a></td></tr>
<tr><td class="num">569</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/texture_scale_bias.txt">SGIX_texture_scale_bias</a></td></tr>
<tr><td class="num">570</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/vertex_preclip.txt">SGIX_vertex_preclip</a></td></tr>
<tr><td class="num">571</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/vertex_preclip.txt">SGIX_vertex_preclip_hint</a></td></tr>
<tr><td class="num">572</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/ycrcb.txt">SGIX_ycrcb</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">573</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGI/color_matrix.txt">SGI_color_matrix</a></td></tr>
<tr><td class="num">574</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGI/color_table.txt">SGI_color_table</a></td></tr>
<tr><td class="num">575</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGI/texture_color_table.txt">SGI_texture_color_table</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">576</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SUNX/constant_data.txt">SUNX_constant_data</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">577</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SUN/convolution_border_modes.txt">SUN_convolution_border_modes</a></td></tr>
<tr><td class="num">578</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SUN/global_alpha.txt">SUN_global_alpha</a></td></tr>
<tr><td class="num">579</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SUN/mesh_array.txt">SUN_mesh_array</a></td></tr>
<tr><td class="num">580</td><td>&nbsp;</td><td><a href="http://wwws.sun.com/software/graphics/opengl/extensions/gl_sun_read_video_pixels.txt">SUN_read_video_pixels</a></td></tr>
<tr><td class="num">581</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SUN/slice_accum.txt">SUN_slice_accum</a></td></tr>
<tr><td class="num">582</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SUN/triangle_list.txt">SUN_triangle_list</a></td></tr>
<tr><td class="num">583</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SUN/vertex.txt">SUN_vertex</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">584</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/WIN/phong_shading.txt">WIN_phong_shading</a></td></tr>
<tr><td class="num">585</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/WIN/specular_fog.txt">WIN_specular_fog</a></td></tr>
<tr><td class="num">586</td><td>&nbsp;</td><td><a href="http://msdn.microsoft.com/library/default.asp?url=/library/en-us/opengl/glfunc01_16zy.asp">WIN_swap_hint</a></td></tr>
</table>
<!-- begin footer.html -->
</td></tr></table></body>
<!-- end footer.html -->

Binary file not shown.

After

Width:  |  Height:  |  Size: 9.1 KiB

View File

@ -0,0 +1,29 @@
The OpenGL Extension Wrangler Library
Copyright (C) 2008-2016, Nigel Stewart <nigels[]users sourceforge net>
Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
Copyright (C) 2002, Lev Povalahev
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* The name of the author may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.

View File

@ -0,0 +1,185 @@
<!-- begin header.html -->
<!--
The OpenGL Extension Wrangler Library
Copyright (C) 2008-2015, Nigel Stewart <nigels[]users sourceforge net>
Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
Copyright (C) 2002, Lev Povalahev
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* The name of the author may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
<html>
<head>
<title>GLEW: The OpenGL Extension Wrangler Library</title>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<link href="glew.css" type="text/css" rel="stylesheet">
</head>
<body bgcolor="#fff0d0">
<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
<tr>
<td bgcolor="#ffffff" align="left" valign="top" width="200">
<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
<tr>
<td valign="top">
<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
<tr><td align="center"><i>Latest Release: <a href="https://sourceforge.net/projects/glew/files/glew/2.0.0/">2.2.0</a></i></td></tr>
<tr><td align="center"><br></td></tr>
<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
<tr><td align="center"><br></td></tr>
<tr><td align="center">
<table border="0" cellpadding="0" cellspacing="0" align="center">
<tr><td align="center"><a href="index.html">Download</a></td></tr>
<tr><td align="center"><a href="basic.html">Usage</a></td></tr>
<tr><td align="center"><a href="build.html">Building</a></td></tr>
<tr><td align="center"><a href="install.html">Installation</a></td></tr>
<tr><td align="center"><a href="advanced.html">Source Generation</a></td></tr>
<tr><td align="center"><a href="log.html">Change Log</a></td></tr>
<tr><td align="center"><br></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew#authors">Authors</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew#copyright-and-licensing">Licensing</a></td></tr>
<tr><td align="center"><br></tr>
<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
</table>
<tr><td align="center"><br></tr>
</table>
</td>
</tr>
<tr>
<td valign="bottom">
<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
<tr><td align="center"><i>Last Update: 07-24-16</i></td></tr>
<tr><td align="center">
<a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
<a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
<a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
<a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
<td bgcolor="#ffffff" align="left" valign="top">
<h1>The OpenGL Extension Wrangler Library</h1>
<!-- end header.html -->
<h2>Supported GLX Extensions</h2>
<table border="0" width="100%" cellpadding="1" cellspacing="0" align="center">
<tr><td class="num">1</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/3DFX/3dfx_multisample.txt">3DFX_multisample</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">2</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/glx_gpu_association.txt">AMD_gpu_association</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">3</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/KHR/context_flush_control.txt">ARB_context_flush_control</a></td></tr>
<tr><td class="num">4</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/glx_create_context.txt">ARB_create_context</a></td></tr>
<tr><td class="num">5</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/glx_create_context.txt">ARB_create_context_profile</a></td></tr>
<tr><td class="num">6</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/glx_create_context_robustness.txt">ARB_create_context_robustness</a></td></tr>
<tr><td class="num">7</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/color_buffer_float.txt">ARB_fbconfig_float</a></td></tr>
<tr><td class="num">8</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/framebuffer_sRGB.txt">ARB_framebuffer_sRGB</a></td></tr>
<tr><td class="num">9</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/ARB/get_proc_address.txt">ARB_get_proc_address</a></td></tr>
<tr><td class="num">10</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/multisample.txt">ARB_multisample</a></td></tr>
<tr><td class="num">11</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/glx_robustness_isolation.txt">ARB_robustness_application_isolation</a></td></tr>
<tr><td class="num">12</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/glx_robustness_isolation.txt">ARB_robustness_share_group_isolation</a></td></tr>
<tr><td class="num">13</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/vertex_buffer_object.txt">ARB_vertex_buffer_object</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">14</td><td>&nbsp;</td><td>ATI_pixel_format_float</td></tr>
<tr><td class="num">15</td><td>&nbsp;</td><td>ATI_render_texture</td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">16</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/glx_buffer_age.txt">EXT_buffer_age</a></td></tr>
<tr><td class="num">17</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/glx_create_context_es2_profile.txt">EXT_create_context_es2_profile</a></td></tr>
<tr><td class="num">18</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/glx_create_context_es_profile.txt">EXT_create_context_es_profile</a></td></tr>
<tr><td class="num">19</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_packed_float.txt">EXT_fbconfig_packed_float</a></td></tr>
<tr><td class="num">20</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_framebuffer_sRGB.txt">EXT_framebuffer_sRGB</a></td></tr>
<tr><td class="num">21</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/import_context.txt">EXT_import_context</a></td></tr>
<tr><td class="num">22</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/glx_libglvnd.txt">EXT_libglvnd</a></td></tr>
<tr><td class="num">23</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/scene_marker.txt">EXT_scene_marker</a></td></tr>
<tr><td class="num">24</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/glx_stereo_tree.txt">EXT_stereo_tree</a></td></tr>
<tr><td class="num">25</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/swap_control.txt">EXT_swap_control</a></td></tr>
<tr><td class="num">26</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/glx_swap_control_tear.txt">EXT_swap_control_tear</a></td></tr>
<tr><td class="num">27</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/texture_from_pixmap.txt">EXT_texture_from_pixmap</a></td></tr>
<tr><td class="num">28</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/visual_info.txt">EXT_visual_info</a></td></tr>
<tr><td class="num">29</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/visual_rating.txt">EXT_visual_rating</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">30</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/INTEL/swap_event.txt">INTEL_swap_event</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">31</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/MESA/agp_offset.txt">MESA_agp_offset</a></td></tr>
<tr><td class="num">32</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/MESA/copy_sub_buffer.txt">MESA_copy_sub_buffer</a></td></tr>
<tr><td class="num">33</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/MESA/pixmap_colormap.txt">MESA_pixmap_colormap</a></td></tr>
<tr><td class="num">34</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/MESA/glx_query_renderer.txt">MESA_query_renderer</a></td></tr>
<tr><td class="num">35</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/MESA/release_buffers.txt">MESA_release_buffers</a></td></tr>
<tr><td class="num">36</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/MESA/set_3dfx_mode.txt">MESA_set_3dfx_mode</a></td></tr>
<tr><td class="num">37</td><td>&nbsp;</td><td><a href="http://cgit.freedesktop.org/mesa/mesa/plain/docs/MESA_swap_control.spec">MESA_swap_control</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">38</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/glx_copy_buffer.txt">NV_copy_buffer</a></td></tr>
<tr><td class="num">39</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/copy_image.txt">NV_copy_image</a></td></tr>
<tr><td class="num">40</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/glx_delay_before_swap.txt">NV_delay_before_swap</a></td></tr>
<tr><td class="num">41</td><td>&nbsp;</td><td><a href="http://cvs1.nvidia.com/inc/GL/glxtokens.h">NV_float_buffer</a></td></tr>
<tr><td class="num">42</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/multisample_coverage.txt">NV_multisample_coverage</a></td></tr>
<tr><td class="num">43</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/present_video.txt">NV_present_video</a></td></tr>
<tr><td class="num">44</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/robustness_video_memory_purge.txt">NV_robustness_video_memory_purge</a></td></tr>
<tr><td class="num">45</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/glx_swap_group.txt">NV_swap_group</a></td></tr>
<tr><td class="num">46</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/NV/vertex_array_range.txt">NV_vertex_array_range</a></td></tr>
<tr><td class="num">47</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/video_capture.txt">NV_video_capture</a></td></tr>
<tr><td class="num">48</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/glx_video_output.txt">NV_video_out</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">49</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/OML/glx_swap_method.txt">OML_swap_method</a></td></tr>
<tr><td class="num">50</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/OML/glx_sync_control.txt">OML_sync_control</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">51</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIS/blended_overlay.txt">SGIS_blended_overlay</a></td></tr>
<tr><td class="num">52</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIS/color_range.txt">SGIS_color_range</a></td></tr>
<tr><td class="num">53</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIS/multisample.txt">SGIS_multisample</a></td></tr>
<tr><td class="num">54</td><td>&nbsp;</td><td>SGIS_shared_multisample</td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">55</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/fbconfig.txt">SGIX_fbconfig</a></td></tr>
<tr><td class="num">56</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/SGIX/hyperpipe_group.txt">SGIX_hyperpipe</a></td></tr>
<tr><td class="num">57</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/pbuffer.txt">SGIX_pbuffer</a></td></tr>
<tr><td class="num">58</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/SGIX/swap_barrier.txt">SGIX_swap_barrier</a></td></tr>
<tr><td class="num">59</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/SGIX/swap_group.txt">SGIX_swap_group</a></td></tr>
<tr><td class="num">60</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/video_resize.txt">SGIX_video_resize</a></td></tr>
<tr><td class="num">61</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGIX/visual_select_group.txt">SGIX_visual_select_group</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">62</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGI/cushion.txt">SGI_cushion</a></td></tr>
<tr><td class="num">63</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGI/make_current_read.txt">SGI_make_current_read</a></td></tr>
<tr><td class="num">64</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGI/swap_control.txt">SGI_swap_control</a></td></tr>
<tr><td class="num">65</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SGI/video_sync.txt">SGI_video_sync</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">66</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/SUN/get_transparent_index.txt">SUN_get_transparent_index</a></td></tr>
<tr><td class="num">67</td><td>&nbsp;</td><td><a href="http://wwws.sun.com/software/graphics/opengl/extensions/glx_sun_video_resize.txt">SUN_video_resize</a></td></tr>
</table>
<!-- begin footer.html -->
</td></tr></table></body>
<!-- end footer.html -->

View File

@ -0,0 +1,340 @@
GNU GENERAL PUBLIC LICENSE
Version 2, June 1991
Copyright (C) 1989, 1991 Free Software Foundation, Inc.
51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
Preamble
The licenses for most software are designed to take away your
freedom to share and change it. By contrast, the GNU General Public
License is intended to guarantee your freedom to share and change free
software--to make sure the software is free for all its users. This
General Public License applies to most of the Free Software
Foundation's software and to any other program whose authors commit to
using it. (Some other Free Software Foundation software is covered by
the GNU Library General Public License instead.) You can apply it to
your programs, too.
When we speak of free software, we are referring to freedom, not
price. Our General Public Licenses are designed to make sure that you
have the freedom to distribute copies of free software (and charge for
this service if you wish), that you receive source code or can get it
if you want it, that you can change the software or use pieces of it
in new free programs; and that you know you can do these things.
To protect your rights, we need to make restrictions that forbid
anyone to deny you these rights or to ask you to surrender the rights.
These restrictions translate to certain responsibilities for you if you
distribute copies of the software, or if you modify it.
For example, if you distribute copies of such a program, whether
gratis or for a fee, you must give the recipients all the rights that
you have. You must make sure that they, too, receive or can get the
source code. And you must show them these terms so they know their
rights.
We protect your rights with two steps: (1) copyright the software, and
(2) offer you this license which gives you legal permission to copy,
distribute and/or modify the software.
Also, for each author's protection and ours, we want to make certain
that everyone understands that there is no warranty for this free
software. If the software is modified by someone else and passed on, we
want its recipients to know that what they have is not the original, so
that any problems introduced by others will not reflect on the original
authors' reputations.
Finally, any free program is threatened constantly by software
patents. We wish to avoid the danger that redistributors of a free
program will individually obtain patent licenses, in effect making the
program proprietary. To prevent this, we have made it clear that any
patent must be licensed for everyone's free use or not licensed at all.
The precise terms and conditions for copying, distribution and
modification follow.
GNU GENERAL PUBLIC LICENSE
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
0. This License applies to any program or other work which contains
a notice placed by the copyright holder saying it may be distributed
under the terms of this General Public License. The "Program", below,
refers to any such program or work, and a "work based on the Program"
means either the Program or any derivative work under copyright law:
that is to say, a work containing the Program or a portion of it,
either verbatim or with modifications and/or translated into another
language. (Hereinafter, translation is included without limitation in
the term "modification".) Each licensee is addressed as "you".
Activities other than copying, distribution and modification are not
covered by this License; they are outside its scope. The act of
running the Program is not restricted, and the output from the Program
is covered only if its contents constitute a work based on the
Program (independent of having been made by running the Program).
Whether that is true depends on what the Program does.
1. You may copy and distribute verbatim copies of the Program's
source code as you receive it, in any medium, provided that you
conspicuously and appropriately publish on each copy an appropriate
copyright notice and disclaimer of warranty; keep intact all the
notices that refer to this License and to the absence of any warranty;
and give any other recipients of the Program a copy of this License
along with the Program.
You may charge a fee for the physical act of transferring a copy, and
you may at your option offer warranty protection in exchange for a fee.
2. You may modify your copy or copies of the Program or any portion
of it, thus forming a work based on the Program, and copy and
distribute such modifications or work under the terms of Section 1
above, provided that you also meet all of these conditions:
a) You must cause the modified files to carry prominent notices
stating that you changed the files and the date of any change.
b) You must cause any work that you distribute or publish, that in
whole or in part contains or is derived from the Program or any
part thereof, to be licensed as a whole at no charge to all third
parties under the terms of this License.
c) If the modified program normally reads commands interactively
when run, you must cause it, when started running for such
interactive use in the most ordinary way, to print or display an
announcement including an appropriate copyright notice and a
notice that there is no warranty (or else, saying that you provide
a warranty) and that users may redistribute the program under
these conditions, and telling the user how to view a copy of this
License. (Exception: if the Program itself is interactive but
does not normally print such an announcement, your work based on
the Program is not required to print an announcement.)
These requirements apply to the modified work as a whole. If
identifiable sections of that work are not derived from the Program,
and can be reasonably considered independent and separate works in
themselves, then this License, and its terms, do not apply to those
sections when you distribute them as separate works. But when you
distribute the same sections as part of a whole which is a work based
on the Program, the distribution of the whole must be on the terms of
this License, whose permissions for other licensees extend to the
entire whole, and thus to each and every part regardless of who wrote it.
Thus, it is not the intent of this section to claim rights or contest
your rights to work written entirely by you; rather, the intent is to
exercise the right to control the distribution of derivative or
collective works based on the Program.
In addition, mere aggregation of another work not based on the Program
with the Program (or with a work based on the Program) on a volume of
a storage or distribution medium does not bring the other work under
the scope of this License.
3. You may copy and distribute the Program (or a work based on it,
under Section 2) in object code or executable form under the terms of
Sections 1 and 2 above provided that you also do one of the following:
a) Accompany it with the complete corresponding machine-readable
source code, which must be distributed under the terms of Sections
1 and 2 above on a medium customarily used for software interchange; or,
b) Accompany it with a written offer, valid for at least three
years, to give any third party, for a charge no more than your
cost of physically performing source distribution, a complete
machine-readable copy of the corresponding source code, to be
distributed under the terms of Sections 1 and 2 above on a medium
customarily used for software interchange; or,
c) Accompany it with the information you received as to the offer
to distribute corresponding source code. (This alternative is
allowed only for noncommercial distribution and only if you
received the program in object code or executable form with such
an offer, in accord with Subsection b above.)
The source code for a work means the preferred form of the work for
making modifications to it. For an executable work, complete source
code means all the source code for all modules it contains, plus any
associated interface definition files, plus the scripts used to
control compilation and installation of the executable. However, as a
special exception, the source code distributed need not include
anything that is normally distributed (in either source or binary
form) with the major components (compiler, kernel, and so on) of the
operating system on which the executable runs, unless that component
itself accompanies the executable.
If distribution of executable or object code is made by offering
access to copy from a designated place, then offering equivalent
access to copy the source code from the same place counts as
distribution of the source code, even though third parties are not
compelled to copy the source along with the object code.
4. You may not copy, modify, sublicense, or distribute the Program
except as expressly provided under this License. Any attempt
otherwise to copy, modify, sublicense or distribute the Program is
void, and will automatically terminate your rights under this License.
However, parties who have received copies, or rights, from you under
this License will not have their licenses terminated so long as such
parties remain in full compliance.
5. You are not required to accept this License, since you have not
signed it. However, nothing else grants you permission to modify or
distribute the Program or its derivative works. These actions are
prohibited by law if you do not accept this License. Therefore, by
modifying or distributing the Program (or any work based on the
Program), you indicate your acceptance of this License to do so, and
all its terms and conditions for copying, distributing or modifying
the Program or works based on it.
6. Each time you redistribute the Program (or any work based on the
Program), the recipient automatically receives a license from the
original licensor to copy, distribute or modify the Program subject to
these terms and conditions. You may not impose any further
restrictions on the recipients' exercise of the rights granted herein.
You are not responsible for enforcing compliance by third parties to
this License.
7. If, as a consequence of a court judgment or allegation of patent
infringement or for any other reason (not limited to patent issues),
conditions are imposed on you (whether by court order, agreement or
otherwise) that contradict the conditions of this License, they do not
excuse you from the conditions of this License. If you cannot
distribute so as to satisfy simultaneously your obligations under this
License and any other pertinent obligations, then as a consequence you
may not distribute the Program at all. For example, if a patent
license would not permit royalty-free redistribution of the Program by
all those who receive copies directly or indirectly through you, then
the only way you could satisfy both it and this License would be to
refrain entirely from distribution of the Program.
If any portion of this section is held invalid or unenforceable under
any particular circumstance, the balance of the section is intended to
apply and the section as a whole is intended to apply in other
circumstances.
It is not the purpose of this section to induce you to infringe any
patents or other property right claims or to contest validity of any
such claims; this section has the sole purpose of protecting the
integrity of the free software distribution system, which is
implemented by public license practices. Many people have made
generous contributions to the wide range of software distributed
through that system in reliance on consistent application of that
system; it is up to the author/donor to decide if he or she is willing
to distribute software through any other system and a licensee cannot
impose that choice.
This section is intended to make thoroughly clear what is believed to
be a consequence of the rest of this License.
8. If the distribution and/or use of the Program is restricted in
certain countries either by patents or by copyrighted interfaces, the
original copyright holder who places the Program under this License
may add an explicit geographical distribution limitation excluding
those countries, so that distribution is permitted only in or among
countries not thus excluded. In such case, this License incorporates
the limitation as if written in the body of this License.
9. The Free Software Foundation may publish revised and/or new versions
of the General Public License from time to time. Such new versions will
be similar in spirit to the present version, but may differ in detail to
address new problems or concerns.
Each version is given a distinguishing version number. If the Program
specifies a version number of this License which applies to it and "any
later version", you have the option of following the terms and conditions
either of that version or of any later version published by the Free
Software Foundation. If the Program does not specify a version number of
this License, you may choose any version ever published by the Free Software
Foundation.
10. If you wish to incorporate parts of the Program into other free
programs whose distribution conditions are different, write to the author
to ask for permission. For software which is copyrighted by the Free
Software Foundation, write to the Free Software Foundation; we sometimes
make exceptions for this. Our decision will be guided by the two goals
of preserving the free status of all derivatives of our free software and
of promoting the sharing and reuse of software generally.
NO WARRANTY
11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY
FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN
OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES
PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED
OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS
TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE
PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING,
REPAIR OR CORRECTION.
12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING
WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR
REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES,
INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING
OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED
TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY
YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE
POSSIBILITY OF SUCH DAMAGES.
END OF TERMS AND CONDITIONS
How to Apply These Terms to Your New Programs
If you develop a new program, and you want it to be of the greatest
possible use to the public, the best way to achieve this is to make it
free software which everyone can redistribute and change under these terms.
To do so, attach the following notices to the program. It is safest
to attach them to the start of each source file to most effectively
convey the exclusion of warranty; and each file should have at least
the "copyright" line and a pointer to where the full notice is found.
<one line to give the program's name and a brief idea of what it does.>
Copyright (C) <year> <name of author>
This program 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 of the License, or
(at your option) any later version.
This program 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 this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Also add information on how to contact you by electronic and paper mail.
If the program is interactive, make it output a short notice like this
when it starts in an interactive mode:
Gnomovision version 69, Copyright (C) year name of author
Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
This is free software, and you are welcome to redistribute it
under certain conditions; type `show c' for details.
The hypothetical commands `show w' and `show c' should show the appropriate
parts of the General Public License. Of course, the commands you use may
be called something other than `show w' and `show c'; they could even be
mouse-clicks or menu items--whatever suits your program.
You should also get your employer (if you work as a programmer) or your
school, if any, to sign a "copyright disclaimer" for the program, if
necessary. Here is a sample; alter the names:
Yoyodyne, Inc., hereby disclaims all copyright interest in the program
`Gnomovision' (which makes passes at compilers) written by James Hacker.
<signature of Ty Coon>, 1 April 1989
Ty Coon, President of Vice
This General Public License does not permit incorporating your program into
proprietary programs. If your program is a subroutine library, you may
consider it more useful to permit linking proprietary applications with the
library. If this is what you want to do, use the GNU Library General
Public License instead of this License.

View File

@ -0,0 +1,213 @@
<!-- begin header.html -->
<!--
The OpenGL Extension Wrangler Library
Copyright (C) 2008-2015, Nigel Stewart <nigels[]users sourceforge net>
Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
Copyright (C) 2002, Lev Povalahev
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* The name of the author may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
<html>
<head>
<title>GLEW: The OpenGL Extension Wrangler Library</title>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<link href="glew.css" type="text/css" rel="stylesheet">
</head>
<body bgcolor="#fff0d0">
<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
<tr>
<td bgcolor="#ffffff" align="left" valign="top" width="200">
<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
<tr>
<td valign="top">
<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
<tr><td align="center"><i>Latest Release: <a href="https://sourceforge.net/projects/glew/files/glew/2.0.0/">2.2.0</a></i></td></tr>
<tr><td align="center"><br></td></tr>
<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
<tr><td align="center"><br></td></tr>
<tr><td align="center">
<table border="0" cellpadding="0" cellspacing="0" align="center">
<tr><td align="center">Download</td></tr>
<tr><td align="center"><a href="basic.html">Usage</a></td></tr>
<tr><td align="center"><a href="build.html">Building</a></td></tr>
<tr><td align="center"><a href="install.html">Installation</a></td></tr>
<tr><td align="center"><a href="advanced.html">Source Generation</a></td></tr>
<tr><td align="center"><a href="log.html">Change Log</a></td></tr>
<tr><td align="center"><br></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew#authors">Authors</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew#copyright-and-licensing">Licensing</a></td></tr>
<tr><td align="center"><br></tr>
<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
</table>
<tr><td align="center"><br></tr>
</table>
</td>
</tr>
<tr>
<td valign="bottom">
<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
<tr><td align="center"><i>Last Update: 07-24-16</i></td></tr>
<tr><td align="center">
<a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
<a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
<a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
<a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
<td bgcolor="#ffffff" align="left" valign="top">
<h1>The OpenGL Extension Wrangler Library</h1>
<!-- end header.html -->
<p>
The OpenGL Extension Wrangler Library (GLEW) is a cross-platform
open-source C/C++ extension loading library. GLEW provides efficient
run-time mechanisms for determining which OpenGL extensions are
supported on the target platform. OpenGL core and extension
functionality is exposed in a single header file. GLEW has been
tested on a variety of operating systems, including Windows, Linux,
Mac OS X, FreeBSD, Irix, and Solaris.
</p>
<h2>Downloads</h2>
<p>
<a href="http://sourceforge.net/projects/glew/">GLEW</a> is distributed
as source and precompiled binaries.<br/>
The latest release is
<a href="https://sourceforge.net/projects/glew/files/glew/2.2.0/">2.2.0</a>[07-24-16]:
</p>
<p>
</p>
<p>
<table border="1" cellpadding="5" cellspacing="0" bgcolor="#f0f0f0" align="center">
<tr>
<td>
<table border="0" cellpadding="3" cellspacing="0">
<tr>
<td></td>
<td align="right"><b>Source</b></td>
<td></td>
<td align="left">
<a href="https://sourceforge.net/projects/glew/files/glew/2.2.0/glew-2.2.0.zip/download">ZIP</a>&nbsp;|&nbsp;
<a href="https://sourceforge.net/projects/glew/files/glew/2.2.0/glew-2.2.0.tgz/download">TGZ</a></td>
<td></td>
</tr>
<tr>
<td></td>
<td align="right"><b>Binaries</b></td>
<td></td>
<td align="left">
<a href="https://sourceforge.net/projects/glew/files/glew/2.2.0/glew-2.2.0-win32.zip/download">Windows 32-bit and 64-bit</a>
</td>
<td></td>
</tr>
</table>
</tr>
</table>
<p></p>
<p>
An up-to-date copy is also available using <a href="http://git-scm.com/">git</a>:
</p>
<ul>
<li><a href="https://github.com/nigels-com/glew">github</a><br/>
<tt>git clone https://github.com/nigels-com/glew.git glew</tt><br/>&nbsp;</li>
</ul>
<h2>Supported Extensions</h2>
<p>
The latest release contains support for OpenGL 4.5, compatibility and forward-compatible contexts and the following extensions:
</p>
<ul>
<li><a href="glew.html">OpenGL extensions</a>
<li><a href="wglew.html">WGL extensions</a>
<li><a href="glxew.html">GLX extensions</a>
</ul>
<h2>News</h2>
<ul>
<li>[07-24-16] <a href="https://sourceforge.net/projects/glew/files/glew/2.0.0/">GLEW 2.0.0</a> adds support for forward-compatible contexts, adds new extensions, OSMesa and EGL support, MX discontinued and minor bug fixes</li>
<li>[08-10-15] <a href="https://sourceforge.net/projects/glew/files/glew/1.13.0/">GLEW 1.13.0</a> adds support for new extensions, fixes minor bugs</li>
<li>[26-01-15] <a href="https://sourceforge.net/projects/glew/files/glew/1.12.0/">GLEW 1.12.0</a> fixes minor bugs and adds new extensions</li>
<li>[08-11-14] <a href="https://sourceforge.net/projects/glew/files/glew/1.11.0/">GLEW 1.11.0</a> adds support for OpenGL 4.5, new extensions</li>
<li>[07-22-13] <a href="https://sourceforge.net/projects/glew/files/glew/1.10.0/">GLEW 1.10.0</a> adds support for OpenGL 4.4, new extensions</li>
<li>[08-06-12] <a href="https://sourceforge.net/projects/glew/files/glew/1.9.0/">GLEW 1.9.0</a> adds support for OpenGL 4.3, new extensions</li>
<li>[07-17-12] <a href="https://sourceforge.net/projects/glew/files/glew/1.8.0/">GLEW 1.8.0</a> fixes minor bugs and adds new extensions</li>
<li>[08-26-11] <a href="https://sourceforge.net/projects/glew/files/glew/1.7.0/">GLEW 1.7.0</a> adds support for OpenGL 4.2, new extensions, fixes bugs</li>
<li>[04-27-11] <a href="https://sourceforge.net/projects/glew/files/glew/1.6.0/">GLEW 1.6.0</a> fixes minor bugs and adds eight new extensions</li>
<li>[01-31-11] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.8/">GLEW 1.5.8</a> fixes minor bugs and adds two new extensions</li>
<li>[11-03-10] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.7/">GLEW 1.5.7</a> fixes minor bugs and adds one new extension</li>
<li>[09-07-10] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.6/">GLEW 1.5.6</a> adds support for OpenGL 4.1, fixes bugs</li>
<li>[07-13-10] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.5/">GLEW 1.5.5</a> fixes minor bugs and adds new extensions</li>
<li>[04-21-10] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.4/">GLEW 1.5.4</a> adds support for OpenGL 3.3, OpenGL 4.0 and new extensions, fixes bugs</li>
<li>[02-28-10] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.3/">GLEW 1.5.3</a> fixes minor bugs and adds three new extensions</li>
<li>[12-31-09] <a href="https://sourceforge.net/projects/glew/files/glew/1.5.2/">GLEW 1.5.2</a> adds support for OpenGL 3.1, OpenGL 3.2 and new extensions</li>
<li>[11-03-08] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=637800">GLEW 1.5.1</a> adds support for OpenGL 3.0 and 31 new extensions</li>
<li>[12-27-07] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=564464">GLEW 1.5.0</a> is released under less restrictive licenses</li>
<li>[04-27-07] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=504079">GLEW 1.4.0</a> is released</li>
<li>[03-08-07] GLEW is included in the <a href="http://developer.nvidia.com/object/sdk_home.html">NVIDIA OpenGL SDK</a></li>
<li>[03-04-07] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=491113">GLEW 1.3.6</a> is released</li>
<li>[02-28-07] <a href="http://glew.svn.sourceforge.net/svnroot/glew/trunk/glew/">Repository</a> is migrated to SVN</li>
<li>[02-25-07] GLEW is included in the <a href="http://www.opengl.org/sdk/">OpenGL SDK</a></li>
<li>[11-21-06] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=465334">GLEW 1.3.5</a> adds OpenGL 2.1 and NVIDIA G80 extensions</li>
<li>[03-04-06] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=398455">GLEW 1.3.4</a> adds support for five new extensions</li>
<li>[05-16-05] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=327647">GLEW 1.3.3</a> is released</li>
<li>[03-16-05] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=313345">GLEW 1.3.2</a> adds support for GL_APPLE_pixel_buffer</li>
<li>[02-11-05] <a href="http://gljava.sourceforge.net/">gljava</a> and <a href="http://sdljava.sourceforge.net/">sdljava</a> provide a Java binding to OpenGL via GLEW</li>
<li>[02-02-05] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=302049">GLEW 1.3.1</a> adds support for <a href="http://www.opengl.org/documentation/extensions/EXT_framebuffer_object.txt">GL_EXT_framebuffer_object</a></li>
<li>[01-04-05] <a href="https://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=294527">GLEW 1.3.0</a> adds core OpenGL 2.0 support plus many enhancements</li>
<li>[12-22-04] <a href="http://glewpy.sf.net/">GLEWpy</a> Python wrapper announced</li>
<li>[12-12-04] <a href="https://sourceforge.net/mail/?group_id=67586">Mailing lists</a> created on sourceforge</li>
<li>[12-06-04] <a href="http://sourceforge.net/project/showfiles.php?group_id=67586&amp;package_id=67942&amp;release_id=287948">GLEW 1.2.5</a> adds new extensions and support for FreeBSD</li>
</ul>
<h2>Links</h2>
<ul>
<li><a href="http://www.opengl.org/sdk/">OpenGL Software Development Kit</a></li>
<li><a href="http://www.opengl.org/registry/">OpenGL Extension Registry</a></li>
<li><a href="https://www.opengl.org/wiki/OpenGL_Extension">OpenGL Wiki: Extensions</a></li>
<li><a href="http://developer.nvidia.com/nvidia-opengl-specs">NVIDIA OpenGL Extension Specifications</a></li>
<li><a href="http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Conceptual/OpenGLExtensionsGuide/Reference/reference.html">Apple OpenGL Extensions Guide</a></li>
</ul>
<!-- begin footer.html -->
</td></tr></table></body>
<!-- end footer.html -->

View File

@ -0,0 +1,228 @@
<!-- begin header.html -->
<!--
The OpenGL Extension Wrangler Library
Copyright (C) 2008-2015, Nigel Stewart <nigels[]users sourceforge net>
Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
Copyright (C) 2002, Lev Povalahev
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* The name of the author may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
<html>
<head>
<title>GLEW: The OpenGL Extension Wrangler Library</title>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<link href="glew.css" type="text/css" rel="stylesheet">
</head>
<body bgcolor="#fff0d0">
<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
<tr>
<td bgcolor="#ffffff" align="left" valign="top" width="200">
<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
<tr>
<td valign="top">
<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
<tr><td align="center"><i>Latest Release: <a href="https://sourceforge.net/projects/glew/files/glew/2.0.0/">2.2.0</a></i></td></tr>
<tr><td align="center"><br></td></tr>
<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
<tr><td align="center"><br></td></tr>
<tr><td align="center">
<table border="0" cellpadding="0" cellspacing="0" align="center">
<tr><td align="center"><a href="index.html">Download</a></td></tr>
<tr><td align="center"><a href="basic.html">Usage</a></td></tr>
<tr><td align="center"><a href="build.html">Building</a></td></tr>
<tr><td align="center">Installation</td></tr>
<tr><td align="center"><a href="advanced.html">Source Generation</a></td></tr>
<tr><td align="center"><a href="log.html">Change Log</a></td></tr>
<tr><td align="center"><br></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew#authors">Authors</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew#copyright-and-licensing">Licensing</a></td></tr>
<tr><td align="center"><br></tr>
<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
</table>
<tr><td align="center"><br></tr>
</table>
</td>
</tr>
<tr>
<td valign="bottom">
<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
<tr><td align="center"><i>Last Update: 07-24-16</i></td></tr>
<tr><td align="center">
<a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
<a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
<a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
<a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
<td bgcolor="#ffffff" align="left" valign="top">
<h1>The OpenGL Extension Wrangler Library</h1>
<!-- end header.html -->
<h2>Installation</h2>
<p>
To use the shared library version of GLEW, you need to copy the
headers and libraries into their destination directories. On Windows
this typically boils down to copying:
</p>
<table border="0" cellpadding="0" cellspacing="0" align="center"> <!-- bgcolor="#f0f0f0" -->
<tr><td align="left"><tt>bin/glew32.dll</tt></td><td>&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td align="left"><tt>%SystemRoot%/system32</tt></td></tr>
<tr><td align="left"><tt>lib/glew32.lib</tt></td><td>&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td align="left"><tt>{VC Root}/Lib</tt></td></tr>
<tr><td align="left"><tt>include/GL/glew.h</tt></td><td>&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td align="left"><tt>{VC Root}/Include/GL</tt></td></tr>
<tr><td align="left"><tt>include/GL/wglew.h</tt></td><td>&nbsp;&nbsp;&nbsp;&nbsp;to&nbsp;&nbsp;&nbsp;&nbsp;</td>
<td align="left"><tt>{VC Root}/Include/GL</tt></td></tr>
</table>
<p>
</p>
<p>
where <tt>{VC Root}</tt> is the Visual C++ root directory, typically
<tt>C:/Program Files/Microsoft Visual Studio/VC98</tt> for Visual
Studio 6.0 or <tt>C:/Program Files/Microsoft Visual
Studio .NET 2003/Vc7/PlatformSDK</tt> for Visual Studio .NET.
</p>
<p>
On Unix, typing <tt>make install</tt> will attempt to install GLEW
into <tt>/usr/include/GL</tt> and <tt>/usr/lib</tt>. You can
customize the installation target via the <tt>GLEW_DEST</tt>
environment variable if you do not have write access to these
directories.
</p>
<h2>Building Your Project with GLEW</h2>
<p>
There are two ways to build your project with GLEW.
</p>
<h3>Including the source files / project file</h3>
<p>
The simpler but less flexible way is to include <tt>glew.h</tt> and
<tt>glew.c</tt> into your project. On Windows, you also need to
define the <tt>GLEW_STATIC</tt> preprocessor token when building a
static library or executable, and the <tt>GLEW_BUILD</tt> preprocessor
token when building a dll. You also need to replace
<tt>&lt;GL/gl.h&gt;</tt> and <tt>&lt;GL/glu.h&gt;</tt> with
<tt>&lt;glew.h&gt;</tt> in your code and set the appropriate include
flag (<tt>-I</tt>) to tell the compiler where to look for it. For
example:
</p>
<p class="pre">
#include &lt;glew.h&gt;<br>
#include &lt;GL/glut.h&gt;<br>
&lt;gl, glu, and glut functionality is available here&gt;<br>
</p>
<p>
Depending on where you put <tt>glew.h</tt> you may also need to change
the include directives in <tt>glew.c</tt>. Note that if you are using
GLEW together with GLUT, you have to include <tt>glew.h</tt> first.
In addition, <tt>glew.h</tt> includes <tt>glu.h</tt>, so you do not
need to include it separately.
</p>
<p>
On Windows, you also have the option of adding the supplied project
file <tt>glew_static.dsp</tt> to your workspace (solution) and compile
it together with your other projects. In this case you also need to
change the <tt>GLEW_BUILD</tt> preprocessor constant to
<tt>GLEW_STATIC</tt> when building a static library or executable,
otherwise you get build errors.
</p>
<p>
<b>Note that GLEW does not use the C
runtime library, so it does not matter which version (single-threaded,
multi-threaded or multi-threaded DLL) it is linked with (without
debugging information). It is, however, always a good idea to compile all
your projects including GLEW with the same C runtime settings.</b>
</p>
<h3>Using GLEW as a shared library</h3>
<p>
Alternatively, you can use the provided project files / makefile to
build a separate shared library you can link your projects with later.
In this case the best practice is to install <tt>glew.h</tt>,
<tt>glew32.lib</tt>, and <tt>glew32.dll</tt> / <tt>libGLEW.so</tt> to
where the OpenGL equivalents <tt>gl.h</tt>, <tt>opengl32.lib</tt>, and
<tt>opengl32.dll</tt> / <tt>libGL.so</tt> are located. Note that you
need administrative privileges to do this. If you do not have
administrator access and your system administrator will not do it for
you, you can install GLEW into your own lib and include subdirectories
and tell the compiler where to find it. Then you can just replace
<tt>&lt;GL/gl.h&gt;</tt> with <tt>&lt;GL/glew.h&gt;</tt> in your
program:
</p>
<p class="pre">
#include &lt;GL/glew.h&gt;<br>
#include &lt;GL/glut.h&gt;<br>
&lt;gl, glu, and glut functionality is available here&gt;<br>
</p>
<p>
or:
</p>
<p class="pre">
#include &lt;GL/glew.h&gt;<br>
&lt;gl and glu functionality is available here&gt;<br>
</p>
<p>
Remember to link your project with <tt>glew32.lib</tt>,
<tt>glu32.lib</tt>, and <tt>opengl32.lib</tt> on Windows and
<tt>libGLEW.so</tt>, <tt>libGLU.so</tt>, and <tt>libGL.so</tt> on
Unix (<tt>-lGLEW -lGLU -lGL</tt>).
</p>
<p>
It is important to keep in mind that <tt>glew.h</tt> includes neither
<tt>windows.h</tt> nor <tt>gl.h</tt>. Also, GLEW will warn you by
issuing a preprocessor error in case you have included <tt>gl.h</tt>,
<tt>glext.h</tt>, or <tt>glATI.h</tt> before <tt>glew.h</tt>.
</p>
<!-- begin footer.html -->
</td></tr></table></body>
<!-- end footer.html -->

View File

@ -0,0 +1,20 @@
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.

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,21 @@
Mesa 3-D graphics library
Version: 7.0
Copyright (C) 1999-2007 Brian Paul All Rights Reserved.
Permission is hereby granted, free of charge, to any person obtaining a
copy of this software and associated documentation files (the "Software"),
to deal in the Software without restriction, including without limitation
the rights to use, copy, modify, merge, publish, distribute, sublicense,
and/or sell copies of the Software, and to permit persons to whom the
Software is furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included
in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL
BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.2 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.6 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -0,0 +1,168 @@
<!-- begin header.html -->
<!--
The OpenGL Extension Wrangler Library
Copyright (C) 2008-2015, Nigel Stewart <nigels[]users sourceforge net>
Copyright (C) 2002-2008, Milan Ikits <milan ikits[]ieee org>
Copyright (C) 2002-2008, Marcelo E. Magallon <mmagallo[]debian org>
Copyright (C) 2002, Lev Povalahev
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, are permitted provided that the following conditions are met:
* Redistributions of source code must retain the above copyright notice,
this list of conditions and the following disclaimer.
* Redistributions in binary form must reproduce the above copyright notice,
this list of conditions and the following disclaimer in the documentation
and/or other materials provided with the distribution.
* The name of the author may be used to endorse or promote products
derived from this software without specific prior written permission.
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS"
AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE
LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
THE POSSIBILITY OF SUCH DAMAGE.
-->
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html/4/loose.dtd">
<html>
<head>
<title>GLEW: The OpenGL Extension Wrangler Library</title>
<meta http-equiv="Content-Type" content="text/html; charset=US-ASCII">
<link href="glew.css" type="text/css" rel="stylesheet">
</head>
<body bgcolor="#fff0d0">
<table border="0" width="100%" cellpadding="12" cellspacing="8" style="height:100%">
<tr>
<td bgcolor="#ffffff" align="left" valign="top" width="200">
<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
<tr>
<td valign="top">
<table border="0" width="100%" cellpadding="0" cellspacing="0" align="left">
<tr><td align="center"><i>Latest Release: <a href="https://sourceforge.net/projects/glew/files/glew/2.0.0/">2.2.0</a></i></td></tr>
<tr><td align="center"><br></td></tr>
<tr><td align="center"><img src="./glew.png" alt="GLEW Logo" width="97" height="75"></td></tr>
<tr><td align="center"><br></td></tr>
<tr><td align="center">
<table border="0" cellpadding="0" cellspacing="0" align="center">
<tr><td align="center"><a href="index.html">Download</a></td></tr>
<tr><td align="center"><a href="basic.html">Usage</a></td></tr>
<tr><td align="center"><a href="build.html">Building</a></td></tr>
<tr><td align="center"><a href="install.html">Installation</a></td></tr>
<tr><td align="center"><a href="advanced.html">Source Generation</a></td></tr>
<tr><td align="center"><a href="log.html">Change Log</a></td></tr>
<tr><td align="center"><br></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew">GitHub</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew/issues">Issues</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew/pulls">Pull Requests</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew#authors">Authors</a></td></tr>
<tr><td align="center"><a href="https://github.com/nigels-com/glew#copyright-and-licensing">Licensing</a></td></tr>
<tr><td align="center"><br></tr>
<tr><td align="center"><a href="https://sourceforge.net/projects/glew">SourceForge Page</a></td></tr>
</table>
<tr><td align="center"><br></tr>
</table>
</td>
</tr>
<tr>
<td valign="bottom">
<table border="0" width="100%" cellpadding="5" cellspacing="0" align="left">
<tr><td align="center"><i>Last Update: 07-24-16</i></td></tr>
<tr><td align="center">
<a href="http://www.opengl.org"><img src="./ogl_sm.jpg" width="68" height="35" border="0" alt="OpenGL Logo"></a><br/>
<a href="https://github.com/nigels-com/glew"><img src="github.png" width="70" height="29" border="0" alt="GitHub Logo"></a><br/>
<a href="https://travis-ci.org/nigels-com/glew/builds"><img src="travis.png" width="114" height="25" border="0" alt="Travis Logo"></a><br/>
<a href="http://sourceforge.net"><img src="http://sourceforge.net/sflogo.php?group_id=67586&amp;type=1" width="88" height="31" border="0" alt="SourceForge Logo"></a>
</td>
</tr>
</table>
</td>
</tr>
</table>
</td>
<td bgcolor="#ffffff" align="left" valign="top">
<h1>The OpenGL Extension Wrangler Library</h1>
<!-- end header.html -->
<h2>Supported WGL Extensions</h2>
<table border="0" width="100%" cellpadding="1" cellspacing="0" align="center">
<tr><td class="num">1</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/3DFX/3dfx_multisample.txt">3DFX_multisample</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">2</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/3DL/stereo_control.txt">3DL_stereo_control</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">3</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/AMD/wgl_gpu_association.txt">AMD_gpu_association</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">4</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/wgl_buffer_region.txt">ARB_buffer_region</a></td></tr>
<tr><td class="num">5</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/KHR/context_flush_control.txt">ARB_context_flush_control</a></td></tr>
<tr><td class="num">6</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/wgl_create_context.txt">ARB_create_context</a></td></tr>
<tr><td class="num">7</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/wgl_create_context.txt">ARB_create_context_profile</a></td></tr>
<tr><td class="num">8</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/wgl_create_context_robustness.txt">ARB_create_context_robustness</a></td></tr>
<tr><td class="num">9</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/wgl_extensions_string.txt">ARB_extensions_string</a></td></tr>
<tr><td class="num">10</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/framebuffer_sRGB.txt">ARB_framebuffer_sRGB</a></td></tr>
<tr><td class="num">11</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/wgl_make_current_read.txt">ARB_make_current_read</a></td></tr>
<tr><td class="num">12</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/multisample.txt">ARB_multisample</a></td></tr>
<tr><td class="num">13</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/wgl_pbuffer.txt">ARB_pbuffer</a></td></tr>
<tr><td class="num">14</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/wgl_pixel_format.txt">ARB_pixel_format</a></td></tr>
<tr><td class="num">15</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/color_buffer_float.txt">ARB_pixel_format_float</a></td></tr>
<tr><td class="num">16</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/wgl_render_texture.txt">ARB_render_texture</a></td></tr>
<tr><td class="num">17</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/wgl_robustness_isolation.txt">ARB_robustness_application_isolation</a></td></tr>
<tr><td class="num">18</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ARB/wgl_robustness_isolation.txt">ARB_robustness_share_group_isolation</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">19</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/ATI/pixel_format_float.txt">ATI_pixel_format_float</a></td></tr>
<tr><td class="num">20</td><td>&nbsp;</td><td>ATI_render_texture_rectangle</td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">21</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/wgl_create_context_es2_profile.txt">EXT_create_context_es2_profile</a></td></tr>
<tr><td class="num">22</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/wgl_create_context_es_profile.txt">EXT_create_context_es_profile</a></td></tr>
<tr><td class="num">23</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/wgl_depth_float.txt">EXT_depth_float</a></td></tr>
<tr><td class="num">24</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/wgl_display_color_table.txt">EXT_display_color_table</a></td></tr>
<tr><td class="num">25</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/wgl_extensions_string.txt">EXT_extensions_string</a></td></tr>
<tr><td class="num">26</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_framebuffer_sRGB.txt">EXT_framebuffer_sRGB</a></td></tr>
<tr><td class="num">27</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/wgl_make_current_read.txt">EXT_make_current_read</a></td></tr>
<tr><td class="num">28</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/wgl_multisample.txt">EXT_multisample</a></td></tr>
<tr><td class="num">29</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/wgl_pbuffer.txt">EXT_pbuffer</a></td></tr>
<tr><td class="num">30</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/wgl_pixel_format.txt">EXT_pixel_format</a></td></tr>
<tr><td class="num">31</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/GL_EXT_packed_float.txt">EXT_pixel_format_packed_float</a></td></tr>
<tr><td class="num">32</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/wgl_swap_control.txt">EXT_swap_control</a></td></tr>
<tr><td class="num">33</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/EXT/wgl_swap_control_tear.txt">EXT_swap_control_tear</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">34</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/I3D/wgl_digital_video_control.txt">I3D_digital_video_control</a></td></tr>
<tr><td class="num">35</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/I3D/wgl_gamma.txt">I3D_gamma</a></td></tr>
<tr><td class="num">36</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/I3D/wgl_genlock.txt">I3D_genlock</a></td></tr>
<tr><td class="num">37</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/I3D/wgl_image_buffer.txt">I3D_image_buffer</a></td></tr>
<tr><td class="num">38</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/I3D/wgl_swap_frame_lock.txt">I3D_swap_frame_lock</a></td></tr>
<tr><td class="num">39</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/I3D/wgl_swap_frame_usage.txt">I3D_swap_frame_usage</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">40</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/DX_interop.txt">NV_DX_interop</a></td></tr>
<tr><td class="num">41</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/DX_interop2.txt">NV_DX_interop2</a></td></tr>
<tr><td class="num">42</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/copy_image.txt">NV_copy_image</a></td></tr>
<tr><td class="num">43</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/wgl_delay_before_swap.txt">NV_delay_before_swap</a></td></tr>
<tr><td class="num">44</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/float_buffer.txt">NV_float_buffer</a></td></tr>
<tr><td class="num">45</td><td>&nbsp;</td><td><a href="http://developer.download.nvidia.com/opengl/specs/WGL_nv_gpu_affinity.txt">NV_gpu_affinity</a></td></tr>
<tr><td class="num">46</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/multisample_coverage.txt">NV_multisample_coverage</a></td></tr>
<tr><td class="num">47</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/present_video.txt">NV_present_video</a></td></tr>
<tr><td class="num">48</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/render_depth_texture.txt">NV_render_depth_texture</a></td></tr>
<tr><td class="num">49</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/render_texture_rectangle.txt">NV_render_texture_rectangle</a></td></tr>
<tr><td class="num">50</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/wgl_swap_group.txt">NV_swap_group</a></td></tr>
<tr><td class="num">51</td><td>&nbsp;</td><td><a href="http://oss.sgi.com/projects/ogl-sample/registry/NV/vertex_array_range.txt">NV_vertex_array_range</a></td></tr>
<tr><td class="num">52</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/video_capture.txt">NV_video_capture</a></td></tr>
<tr><td class="num">53</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/NV/wgl_video_output.txt">NV_video_output</a></td></tr>
<tr><td><br></td><td></td><td></td></tr>
<tr><td class="num">54</td><td>&nbsp;</td><td><a href="http://www.opengl.org/registry/specs/OML/wgl_sync_control.txt">OML_sync_control</a></td></tr>
</table>
<!-- begin footer.html -->
</td></tr></table></body>
<!-- end footer.html -->

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -127,8 +127,8 @@ template<class T>
inline T _log_sanitize(T arg) { return arg; } inline T _log_sanitize(T arg) { return arg; }
// Sanitize C-style strings by converting NULL to "<nullptr>" to prevent null dereference // Sanitize C-style strings by converting NULL to "<nullptr>" to prevent null dereference
inline const char * _log_sanitize(const char *arg) { return (NULL == arg) ? "<nullptr>" : arg; } inline const char * _log_sanitize(char *arg) { return (NULL == arg) ? "<nullptr>" : arg; }
inline const wchar_t * _log_sanitize(const wchar_t *arg) { return (NULL == arg) ? L"<nullptr>" : arg; } inline const wchar_t * _log_sanitize(wchar_t *arg) { return (NULL == arg) ? L"<nullptr>" : arg; }
// Convert booleans to strings properly // Convert booleans to strings properly
inline const char * _log_sanitize(BOOL value) { return value ? "TRUE" : "FALSE"; } inline const char * _log_sanitize(BOOL value) { return value ? "TRUE" : "FALSE"; }
@ -196,6 +196,9 @@ extern thread_local std::string _logPrefix;
// Log function with one argument // Log function with one argument
#define LOG_FUNC_ONE_ARG(arg) LOG_FUNC_BEGIN LOG_FUNC_ARG(arg) LOG_FUNC_END #define LOG_FUNC_ONE_ARG(arg) LOG_FUNC_BEGIN LOG_FUNC_ARG(arg) LOG_FUNC_END
// Log function with one typed argument
#define LOG_FUNC_ONE_ARG_TYPE(type, arg) LOG_FUNC_BEGIN LOG_FUNC_ARG_TYPE(type, arg) LOG_FUNC_END
// Log function with one out argument // Log function with one out argument
#define LOG_FUNC_ONE_ARG_OUT(arg) LOG_FUNC_BEGIN LOG_FUNC_ARG_OUT(arg) LOG_FUNC_END #define LOG_FUNC_ONE_ARG_OUT(arg) LOG_FUNC_BEGIN LOG_FUNC_ARG_OUT(arg) LOG_FUNC_END

View File

@ -48,6 +48,7 @@ namespace xboxkrnl
#include "EmuFile.h" #include "EmuFile.h"
#include "EmuFS.h" #include "EmuFS.h"
#include "EmuShared.h" #include "EmuShared.h"
#include "EmuNV2A.h" // For InitOpenGLContext
#include "HLEIntercept.h" #include "HLEIntercept.h"
#include "Exe.h" #include "Exe.h"
@ -586,9 +587,22 @@ extern "C" CXBXKRNL_API void CxbxKrnlInit
SetThreadAffinityMask(GetCurrentThread(), g_CPUXbox); SetThreadAffinityMask(GetCurrentThread(), g_CPUXbox);
} }
DbgPrintf("EmuMain (0x%X): Initializing Direct3D.\n", GetCurrentThreadId()); //
// initialize grapchics
//
DbgPrintf("EmuMain (0x%X): Initializing render window.\n", GetCurrentThreadId());
XTL::CxbxInitWindow(pXbeHeader, dwXbeHeaderSize);
XTL::EmuD3DInit(pXbeHeader, dwXbeHeaderSize); if (bLLE_GPU)
{
DbgPrintf("EmuMain (0x%X): Initializing OpenGL.\n", GetCurrentThreadId());
InitOpenGLContext();
}
else
{
DbgPrintf("EmuMain (0x%X): Initializing Direct3D.\n", GetCurrentThreadId());
XTL::EmuD3DInit(pXbeHeader, dwXbeHeaderSize);
}
EmuHLEIntercept(pLibraryVersion, pXbeHeader); EmuHLEIntercept(pLibraryVersion, pXbeHeader);

View File

@ -51,6 +51,8 @@ extern "C" {
#define XBOX_KERNEL_BASE 0x80010000 #define XBOX_KERNEL_BASE 0x80010000
#define XBOX_NV2A_INIT_VECTOR 0xFF000008 #define XBOX_NV2A_INIT_VECTOR 0xFF000008
#define MAX_BUS_INTERRUPT_LEVEL 27
#define MAX_NUM_INTERRUPTS 256
/*! validate version string match */ /*! validate version string match */
CXBXKRNL_API bool CxbxKrnlVerifyVersion(const char *szVersion); CXBXKRNL_API bool CxbxKrnlVerifyVersion(const char *szVersion);

View File

@ -79,9 +79,7 @@ static inline void EmuVerifyResourceIsRegistered(XTL::X_D3DReso
static void EmuAdjustPower2(UINT *dwWidth, UINT *dwHeight); static void EmuAdjustPower2(UINT *dwWidth, UINT *dwHeight);
// Static Variable(s) // Static Variable(s)
static GUID g_ddguid; // DirectDraw driver GUID
static HMONITOR g_hMonitor = NULL; // Handle to DirectDraw monitor static HMONITOR g_hMonitor = NULL; // Handle to DirectDraw monitor
static XTL::LPDIRECT3D8 g_pD3D8 = NULL; // Direct3D8
static BOOL g_bSupportsYUY2 = FALSE;// Does device support YUY2 overlays? static BOOL g_bSupportsYUY2 = FALSE;// Does device support YUY2 overlays?
static XTL::LPDIRECTDRAW7 g_pDD7 = NULL; // DirectDraw7 static XTL::LPDIRECTDRAW7 g_pDD7 = NULL; // DirectDraw7
static DWORD g_dwOverlayW = 640; // Cached Overlay Width static DWORD g_dwOverlayW = 640; // Cached Overlay Width
@ -89,7 +87,6 @@ static DWORD g_dwOverlayH = 480; // Cached Overlay He
static DWORD g_dwOverlayP = 640; // Cached Overlay Pitch static DWORD g_dwOverlayP = 640; // Cached Overlay Pitch
static Xbe::Header *g_XbeHeader = NULL; // XbeHeader static Xbe::Header *g_XbeHeader = NULL; // XbeHeader
static uint32 g_XbeHeaderSize = 0; // XbeHeaderSize static uint32 g_XbeHeaderSize = 0; // XbeHeaderSize
static XTL::D3DCAPS8 g_D3DCaps; // Direct3D8 Caps
static HBRUSH g_hBgBrush = NULL; // Background Brush static HBRUSH g_hBgBrush = NULL; // Background Brush
static volatile bool g_bRenderWindowActive = false; static volatile bool g_bRenderWindowActive = false;
static XBVideo g_XBVideo; static XBVideo g_XBVideo;
@ -101,6 +98,11 @@ static DWORD g_CallbackParam; // Callback param
static BOOL g_bHasZBuffer = FALSE; // Does device have Z Buffer? static BOOL g_bHasZBuffer = FALSE; // Does device have Z Buffer?
//static DWORD g_dwPrimPerFrame = 0; // Number of primitives within one frame //static DWORD g_dwPrimPerFrame = 0; // Number of primitives within one frame
// D3D based variables
static GUID g_ddguid; // DirectDraw driver GUID
static XTL::LPDIRECT3D8 g_pD3D8 = NULL; // Direct3D8
static XTL::D3DCAPS8 g_D3DCaps; // Direct3D8 Caps
// wireframe toggle // wireframe toggle
static int g_iWireframe = 0; static int g_iWireframe = 0;
@ -167,8 +169,7 @@ struct EmuD3D8CreateDeviceProxyData
} }
g_EmuCDPD = {0}; g_EmuCDPD = {0};
// Direct3D initialization (called before emulation begins) VOID XTL::CxbxInitWindow(Xbe::Header *XbeHeader, uint32 XbeHeaderSize)
VOID XTL::EmuD3DInit(Xbe::Header *XbeHeader, uint32 XbeHeaderSize)
{ {
g_EmuShared->GetXBVideo(&g_XBVideo); g_EmuShared->GetXBVideo(&g_XBVideo);
@ -200,16 +201,6 @@ VOID XTL::EmuD3DInit(Xbe::Header *XbeHeader, uint32 XbeHeaderSize)
} }
} }
// create the create device proxy thread
{
DWORD dwThreadId;
HANDLE hEmuCreateDeviceProxyThread = CreateThread(NULL, NULL, EmuCreateDeviceProxy, NULL, NULL, &dwThreadId);
// Ported from Dxbx :
// If possible, assign this thread to another core than the one that runs Xbox1 code :
SetThreadAffinityMask(hEmuCreateDeviceProxyThread, g_CPUOthers);
}
/* TODO : Port this Dxbx code : /* TODO : Port this Dxbx code :
// create vblank handling thread // create vblank handling thread
{ {
@ -244,7 +235,23 @@ VOID XTL::EmuD3DInit(Xbe::Header *XbeHeader, uint32 XbeHeaderSize)
Sleep(50); Sleep(50);
} }
// create Direct3D8 and retrieve caps SetFocus(g_hEmuWindow);
}
// Direct3D initialization (called before emulation begins)
VOID XTL::EmuD3DInit(Xbe::Header *XbeHeader, uint32 XbeHeaderSize)
{
// create the create device proxy thread
{
DWORD dwThreadId;
CreateThread(NULL, NULL, EmuCreateDeviceProxy, NULL, NULL, &dwThreadId);
// Ported from Dxbx :
// If possible, assign this thread to another core than the one that runs Xbox1 code :
SetThreadAffinityMask(&dwThreadId, g_CPUOthers);
}
// create Direct3D8 and retrieve caps
{ {
using namespace XTL; using namespace XTL;
@ -259,8 +266,6 @@ VOID XTL::EmuD3DInit(Xbe::Header *XbeHeader, uint32 XbeHeaderSize)
g_pD3D8->GetDeviceCaps(g_XBVideo.GetDisplayAdapter(), DevType, &g_D3DCaps); g_pD3D8->GetDeviceCaps(g_XBVideo.GetDisplayAdapter(), DevType, &g_D3DCaps);
} }
SetFocus(g_hEmuWindow);
// create default device // create default device
{ {
XTL::X_D3DPRESENT_PARAMETERS PresParam; XTL::X_D3DPRESENT_PARAMETERS PresParam;

View File

@ -42,6 +42,9 @@
#define DIRECTDRAW_VERSION 0x0700 #define DIRECTDRAW_VERSION 0x0700
#include <ddraw.h> #include <ddraw.h>
// initialize render window
extern VOID CxbxInitWindow(Xbe::Header *XbeHeader, uint32 XbeHeaderSize);
// initialize direct3d // initialize direct3d
extern VOID EmuD3DInit(Xbe::Header *XbeHeader, uint32 XbeHeaderSize); extern VOID EmuD3DInit(Xbe::Header *XbeHeader, uint32 XbeHeaderSize);

File diff suppressed because it is too large Load Diff

View File

@ -158,7 +158,6 @@ XBSYSAPI EXPORTNUM(43) xboxkrnl::BOOLEAN NTAPI xboxkrnl::HalEnableSystemInterrup
RETURN(FALSE); RETURN(FALSE);
} }
#define MAX_BUS_INTERRUPT_LEVEL 27
#ifdef _DEBUG_TRACE #ifdef _DEBUG_TRACE
// Source : Xbox Linux // Source : Xbox Linux
char *IRQNames[MAX_BUS_INTERRUPT_LEVEL + 1] = char *IRQNames[MAX_BUS_INTERRUPT_LEVEL + 1] =

View File

@ -186,19 +186,37 @@ XBSYSAPI EXPORTNUM(96) xboxkrnl::BOOLEAN NTAPI xboxkrnl::KeCancelTimer
RETURN(TRUE); RETURN(TRUE);
} }
xboxkrnl::PKINTERRUPT EmuInterruptList[MAX_BUS_INTERRUPT_LEVEL + 1][MAX_NUM_INTERRUPTS] = { 0 };
xboxkrnl::DWORD EmuFreeInterrupt[MAX_BUS_INTERRUPT_LEVEL + 1] = { 0 };
// ****************************************************************** // ******************************************************************
// * 0x0062 - KeConnectInterrupt() // * 0x0062 - KeConnectInterrupt()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(98) xboxkrnl::LONG NTAPI xboxkrnl::KeConnectInterrupt XBSYSAPI EXPORTNUM(98) xboxkrnl::BOOLEAN NTAPI xboxkrnl::KeConnectInterrupt
( (
IN PKINTERRUPT InterruptObject IN PKINTERRUPT InterruptObject
) )
{ {
LOG_FUNC_ONE_ARG(InterruptObject); LOG_FUNC_ONE_ARG(InterruptObject);
LOG_UNIMPLEMENTED(); BOOLEAN ret = FALSE;
RETURN(0); // here we have to connect the interrupt object to the vector
// more than 1 interrupt object can be connected!
if (!InterruptObject->Connected)
{
if (EmuFreeInterrupt[InterruptObject->BusInterruptLevel] < MAX_NUM_INTERRUPTS)
{
InterruptObject->Connected = TRUE;
EmuInterruptList[InterruptObject->BusInterruptLevel][EmuFreeInterrupt[InterruptObject->BusInterruptLevel]++] = InterruptObject;
ret = TRUE;
}
else
EmuWarning("Out of interrupt places!");
}
// else do nothing
RETURN(ret);
} }
// ****************************************************************** // ******************************************************************

View File

@ -180,9 +180,12 @@ XBSYSAPI EXPORTNUM(168) xboxkrnl::PVOID NTAPI xboxkrnl::MmClaimGpuInstanceMemory
MI_CONVERT_PFN_TO_PHYSICAL(MM_INSTANCE_PHYSICAL_PAGE + MM_INSTANCE_PAGE_COUNT); MI_CONVERT_PFN_TO_PHYSICAL(MM_INSTANCE_PHYSICAL_PAGE + MM_INSTANCE_PAGE_COUNT);
// Chihiro arcade should use *NumberOfPaddingBytes = 0; // Chihiro arcade should use *NumberOfPaddingBytes = 0;
EmuWarning("*NumberOfPaddingBytes = 0x%08X\n", *NumberOfPaddingBytes);
if (NumberOfBytes != MAXULONG_PTR) if (NumberOfBytes != MAXULONG_PTR)
{ {
LOG_UNIMPLEMENTED(); if (NumberOfBytes != 20480)
LOG_IGNORED();
} }
PVOID Result = (PUCHAR)MI_CONVERT_PFN_TO_PHYSICAL(MM_HIGHEST_PHYSICAL_PAGE + 1) PVOID Result = (PUCHAR)MI_CONVERT_PFN_TO_PHYSICAL(MM_HIGHEST_PHYSICAL_PAGE + 1)

View File

@ -180,8 +180,8 @@ XBSYSAPI EXPORTNUM(263) xboxkrnl::NTSTATUS NTAPI xboxkrnl::RtlAppendUnicodeToStr
// Debug API? // Debug API?
XBSYSAPI EXPORTNUM(264) xboxkrnl::VOID NTAPI xboxkrnl::RtlAssert XBSYSAPI EXPORTNUM(264) xboxkrnl::VOID NTAPI xboxkrnl::RtlAssert
( (
PVOID FailedAssertion, // PCHAR PCHAR FailedAssertion,
PVOID FileName, // PCHAR PCHAR FileName,
ULONG LineNumber, ULONG LineNumber,
PCHAR Message PCHAR Message
) )

View File

@ -59,10 +59,10 @@ namespace NtDll
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(335) xboxkrnl::VOID NTAPI xboxkrnl::XcSHAInit XBSYSAPI EXPORTNUM(335) xboxkrnl::VOID NTAPI xboxkrnl::XcSHAInit
( (
UCHAR *pbSHAContext IN PUCHAR pbSHAContext
) )
{ {
LOG_FUNC_ONE_ARG_OUT(pbSHAContext); LOG_FUNC_ONE_ARG_TYPE(PBYTE, pbSHAContext);
A_SHAInit((SHA_CTX*)pbSHAContext); A_SHAInit((SHA_CTX*)pbSHAContext);
} }
@ -72,14 +72,14 @@ XBSYSAPI EXPORTNUM(335) xboxkrnl::VOID NTAPI xboxkrnl::XcSHAInit
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(336) xboxkrnl::VOID NTAPI xboxkrnl::XcSHAUpdate XBSYSAPI EXPORTNUM(336) xboxkrnl::VOID NTAPI xboxkrnl::XcSHAUpdate
( (
UCHAR *pbSHAContext, IN PUCHAR pbSHAContext,
UCHAR *pbInput, IN PUCHAR pbInput,
ULONG dwInputLength IN ULONG dwInputLength
) )
{ {
LOG_FUNC_BEGIN LOG_FUNC_BEGIN
LOG_FUNC_ARG_OUT(pbSHAContext) LOG_FUNC_ARG_TYPE(PBYTE, pbSHAContext)
LOG_FUNC_ARG_OUT(pbInput) LOG_FUNC_ARG_TYPE(PBYTE, pbInput)
LOG_FUNC_ARG(dwInputLength) LOG_FUNC_ARG(dwInputLength)
LOG_FUNC_END; LOG_FUNC_END;
@ -91,13 +91,13 @@ XBSYSAPI EXPORTNUM(336) xboxkrnl::VOID NTAPI xboxkrnl::XcSHAUpdate
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(337) xboxkrnl::VOID NTAPI xboxkrnl::XcSHAFinal XBSYSAPI EXPORTNUM(337) xboxkrnl::VOID NTAPI xboxkrnl::XcSHAFinal
( (
UCHAR *pbSHAContext, IN PUCHAR pbSHAContext,
UCHAR *pbDigest IN PUCHAR pbDigest
) )
{ {
LOG_FUNC_BEGIN LOG_FUNC_BEGIN
LOG_FUNC_ARG_OUT(pbSHAContext) LOG_FUNC_ARG_TYPE(PBYTE, pbSHAContext)
LOG_FUNC_ARG_OUT(pbDigest) LOG_FUNC_ARG_TYPE(PBYTE, pbDigest)
LOG_FUNC_END; LOG_FUNC_END;
A_SHAFinal((SHA_CTX*)pbSHAContext, pbDigest); A_SHAFinal((SHA_CTX*)pbSHAContext, pbDigest);
@ -106,7 +106,7 @@ XBSYSAPI EXPORTNUM(337) xboxkrnl::VOID NTAPI xboxkrnl::XcSHAFinal
// ****************************************************************** // ******************************************************************
// * 0x0152 - XcRC4Key() // * 0x0152 - XcRC4Key()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(338) xboxkrnl::VOID xboxkrnl::XcRC4Key XBSYSAPI EXPORTNUM(338) xboxkrnl::VOID NTAPI xboxkrnl::XcRC4Key
( (
IN PUCHAR pbKeyStruct, IN PUCHAR pbKeyStruct,
IN ULONG dwKeyLength, IN ULONG dwKeyLength,
@ -114,9 +114,9 @@ XBSYSAPI EXPORTNUM(338) xboxkrnl::VOID xboxkrnl::XcRC4Key
) )
{ {
LOG_FUNC_BEGIN LOG_FUNC_BEGIN
LOG_FUNC_ARG_OUT(pbKeyStruct) LOG_FUNC_ARG_TYPE(PBYTE, pbKeyStruct)
LOG_FUNC_ARG(dwKeyLength) LOG_FUNC_ARG(dwKeyLength)
LOG_FUNC_ARG_OUT(pbKey) LOG_FUNC_ARG_TYPE(PBYTE, pbKey)
LOG_FUNC_END; LOG_FUNC_END;
Rc4Initialise((Rc4Context*)pbKeyStruct, pbKey, dwKeyLength, 0); Rc4Initialise((Rc4Context*)pbKeyStruct, pbKey, dwKeyLength, 0);
@ -125,7 +125,7 @@ XBSYSAPI EXPORTNUM(338) xboxkrnl::VOID xboxkrnl::XcRC4Key
// ****************************************************************** // ******************************************************************
// * 0x0153 - XcRC4Crypt // * 0x0153 - XcRC4Crypt
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(339) xboxkrnl::VOID xboxkrnl::XcRC4Crypt XBSYSAPI EXPORTNUM(339) xboxkrnl::VOID NTAPI xboxkrnl::XcRC4Crypt
( (
IN PUCHAR pbKeyStruct, IN PUCHAR pbKeyStruct,
IN ULONG dwInputLength, IN ULONG dwInputLength,
@ -133,9 +133,9 @@ XBSYSAPI EXPORTNUM(339) xboxkrnl::VOID xboxkrnl::XcRC4Crypt
) )
{ {
LOG_FUNC_BEGIN LOG_FUNC_BEGIN
LOG_FUNC_ARG_OUT(pbKeyStruct) LOG_FUNC_ARG_TYPE(PBYTE, pbKeyStruct)
LOG_FUNC_ARG(dwInputLength) LOG_FUNC_ARG(dwInputLength)
LOG_FUNC_ARG_OUT(pbInput) LOG_FUNC_ARG_TYPE(PBYTE, pbInput)
LOG_FUNC_END; LOG_FUNC_END;
Rc4Xor((Rc4Context*)pbKeyStruct, pbInput, pbInput, dwInputLength); Rc4Xor((Rc4Context*)pbKeyStruct, pbInput, pbInput, dwInputLength);
@ -144,7 +144,8 @@ XBSYSAPI EXPORTNUM(339) xboxkrnl::VOID xboxkrnl::XcRC4Crypt
// ****************************************************************** // ******************************************************************
// * 0x0154 - XcHMAC() // * 0x0154 - XcHMAC()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(340) xboxkrnl::VOID NTAPI xboxkrnl::XcHMAC( XBSYSAPI EXPORTNUM(340) xboxkrnl::VOID NTAPI xboxkrnl::XcHMAC
(
IN PBYTE pbKeyMaterial, IN PBYTE pbKeyMaterial,
IN ULONG cbKeyMaterial, IN ULONG cbKeyMaterial,
IN PBYTE pbData, IN PBYTE pbData,
@ -155,11 +156,11 @@ XBSYSAPI EXPORTNUM(340) xboxkrnl::VOID NTAPI xboxkrnl::XcHMAC(
) )
{ {
LOG_FUNC_BEGIN LOG_FUNC_BEGIN
LOG_FUNC_ARG_OUT(pbKeyMaterial) LOG_FUNC_ARG(pbKeyMaterial)
LOG_FUNC_ARG(cbKeyMaterial) LOG_FUNC_ARG(cbKeyMaterial)
LOG_FUNC_ARG_OUT(pbData) LOG_FUNC_ARG(pbData)
LOG_FUNC_ARG(cbData) LOG_FUNC_ARG(cbData)
LOG_FUNC_ARG_OUT(pbData2) LOG_FUNC_ARG(pbData2)
LOG_FUNC_ARG(cbData2) LOG_FUNC_ARG(cbData2)
LOG_FUNC_ARG_OUT(HmacData) LOG_FUNC_ARG_OUT(HmacData)
LOG_FUNC_END; LOG_FUNC_END;
@ -205,101 +206,127 @@ XBSYSAPI EXPORTNUM(340) xboxkrnl::VOID NTAPI xboxkrnl::XcHMAC(
// ****************************************************************** // ******************************************************************
// * 0x0155 - XcPKEncPublic() // * 0x0155 - XcPKEncPublic()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(341) xboxkrnl::VOID xboxkrnl::XcPKEncPublic( XBSYSAPI EXPORTNUM(341) xboxkrnl::ULONG NTAPI xboxkrnl::XcPKEncPublic
IN PBYTE pbPubKey, (
IN PBYTE pbInput, IN PUCHAR pbPubKey,
OUT PBYTE pbOutput IN PUCHAR pbInput,
) OUT PUCHAR pbOutput
)
{ {
LOG_FUNC_BEGIN LOG_FUNC_BEGIN
LOG_FUNC_ARG_OUT(pbPubKey) LOG_FUNC_ARG_TYPE(PBYTE, pbPubKey)
LOG_FUNC_ARG_OUT(pbInput) LOG_FUNC_ARG_TYPE(PBYTE, pbInput)
LOG_FUNC_ARG_OUT(pbOutput) LOG_FUNC_ARG_OUT(pbOutput)
LOG_FUNC_END; LOG_FUNC_END;
ULONG ret = 0;
LOG_UNIMPLEMENTED(); LOG_UNIMPLEMENTED();
RETURN(ret);
} }
// ****************************************************************** // ******************************************************************
// * 0x0156 - XcPKDecPrivate() // * 0x0156 - XcPKDecPrivate()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(342) xboxkrnl::VOID xboxkrnl::XcPKDecPrivate( XBSYSAPI EXPORTNUM(342) xboxkrnl::ULONG NTAPI xboxkrnl::XcPKDecPrivate
IN PBYTE pbPrvKey, (
IN PBYTE pbInput, IN PUCHAR pbPrvKey,
OUT PBYTE pbOutput IN PUCHAR pbInput,
) OUT PUCHAR pbOutput
)
{ {
LOG_FUNC_BEGIN LOG_FUNC_BEGIN
LOG_FUNC_ARG_OUT(pbPrvKey) LOG_FUNC_ARG_TYPE(PBYTE, pbPrvKey)
LOG_FUNC_ARG_OUT(pbInput) LOG_FUNC_ARG_TYPE(PBYTE, pbInput)
LOG_FUNC_ARG_OUT(pbOutput) LOG_FUNC_ARG_OUT(pbOutput)
LOG_FUNC_END; LOG_FUNC_END;
ULONG ret = 0;
LOG_UNIMPLEMENTED(); LOG_UNIMPLEMENTED();
RETURN(ret);
} }
// ****************************************************************** // ******************************************************************
// * 0x0157 - XcPKGetKeyLen() // * 0x0157 - XcPKGetKeyLen()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(343) xboxkrnl::VOID xboxkrnl::XcPKGetKeyLen( XBSYSAPI EXPORTNUM(343) xboxkrnl::ULONG NTAPI xboxkrnl::XcPKGetKeyLen
OUT PBYTE pbPubKey (
) OUT PUCHAR pbPubKey
)
{ {
LOG_FUNC_ONE_ARG(pbPubKey); LOG_FUNC_ONE_ARG_TYPE(PBYTE, pbPubKey);
ULONG ret = 0;
LOG_UNIMPLEMENTED(); LOG_UNIMPLEMENTED();
RETURN(ret);
} }
// ****************************************************************** // ******************************************************************
// * 0x0158 - XcVerifyPKCS1Signature() // * 0x0158 - XcVerifyPKCS1Signature()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(344) xboxkrnl::VOID xboxkrnl::XcVerifyPKCS1Signature( XBSYSAPI EXPORTNUM(344) xboxkrnl::BOOLEAN NTAPI xboxkrnl::XcVerifyPKCS1Signature
IN PBYTE pbSig, (
IN PBYTE pbPubKey, IN PUCHAR pbSig,
IN PBYTE pbDigest IN PUCHAR pbPubKey,
) IN PUCHAR pbDigest
)
{ {
LOG_FUNC_BEGIN LOG_FUNC_BEGIN
LOG_FUNC_ARG_OUT(pbSig) LOG_FUNC_ARG_TYPE(PBYTE, pbSig)
LOG_FUNC_ARG_OUT(pbPubKey) LOG_FUNC_ARG_TYPE(PBYTE, pbPubKey)
LOG_FUNC_ARG_OUT(pbDigest) LOG_FUNC_ARG_TYPE(PBYTE, pbDigest)
LOG_FUNC_END; LOG_FUNC_END;
BOOLEAN ret = TRUE;
LOG_UNIMPLEMENTED(); LOG_UNIMPLEMENTED();
RETURN(ret);
} }
// ****************************************************************** // ******************************************************************
// * 0x0159 - XcModExp() // * 0x0159 - XcModExp()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(345) xboxkrnl::VOID xboxkrnl::XcModExp( XBSYSAPI EXPORTNUM(345) xboxkrnl::ULONG NTAPI xboxkrnl::XcModExp
IN PULONG pA, (
IN PULONG pB, IN LPDWORD pA,
IN PULONG pC, IN LPDWORD pB,
IN PULONG pD, IN LPDWORD pC,
IN LPDWORD pD,
IN ULONG dwN IN ULONG dwN
) )
{ {
LOG_FUNC_BEGIN LOG_FUNC_BEGIN
LOG_FUNC_ARG_OUT(pA) LOG_FUNC_ARG(pA)
LOG_FUNC_ARG_OUT(pB) LOG_FUNC_ARG(pB)
LOG_FUNC_ARG_OUT(pC) LOG_FUNC_ARG(pC)
LOG_FUNC_ARG_OUT(pD) LOG_FUNC_ARG(pD)
LOG_FUNC_ARG(dwN) LOG_FUNC_ARG(dwN)
LOG_FUNC_END; LOG_FUNC_END;
ULONG ret = 0;
LOG_UNIMPLEMENTED(); LOG_UNIMPLEMENTED();
RETURN(ret);
} }
// ****************************************************************** // ******************************************************************
// * 0x015A - XcDESKeyParity() // * 0x015A - XcDESKeyParity()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(346) xboxkrnl::VOID xboxkrnl::XcDESKeyParity( XBSYSAPI EXPORTNUM(346) xboxkrnl::VOID NTAPI xboxkrnl::XcDESKeyParity
IN PBYTE pbKey, (
IN PUCHAR pbKey,
IN ULONG dwKeyLength IN ULONG dwKeyLength
) )
{ {
LOG_FUNC_BEGIN LOG_FUNC_BEGIN
LOG_FUNC_ARG_OUT(pbKey) LOG_FUNC_ARG_TYPE(PBYTE, pbKey)
LOG_FUNC_ARG(dwKeyLength) LOG_FUNC_ARG(dwKeyLength)
LOG_FUNC_END; LOG_FUNC_END;
@ -309,16 +336,17 @@ XBSYSAPI EXPORTNUM(346) xboxkrnl::VOID xboxkrnl::XcDESKeyParity(
// ****************************************************************** // ******************************************************************
// * 0x015B - XcKeyTable() // * 0x015B - XcKeyTable()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(347) xboxkrnl::VOID xboxkrnl::XcKeyTable( XBSYSAPI EXPORTNUM(347) xboxkrnl::VOID NTAPI xboxkrnl::XcKeyTable
(
IN ULONG dwCipher, IN ULONG dwCipher,
IN PBYTE pbKeyTable, OUT PUCHAR pbKeyTable,
IN PBYTE pbKey IN PUCHAR pbKey
) )
{ {
LOG_FUNC_BEGIN LOG_FUNC_BEGIN
LOG_FUNC_ARG(dwCipher) LOG_FUNC_ARG(dwCipher)
LOG_FUNC_ARG_OUT(pbKeyTable) LOG_FUNC_ARG_OUT(pbKeyTable)
LOG_FUNC_ARG_OUT(pbKey) LOG_FUNC_ARG_TYPE(PBYTE, pbKey)
LOG_FUNC_END; LOG_FUNC_END;
LOG_UNIMPLEMENTED(); LOG_UNIMPLEMENTED();
@ -327,19 +355,20 @@ XBSYSAPI EXPORTNUM(347) xboxkrnl::VOID xboxkrnl::XcKeyTable(
// ****************************************************************** // ******************************************************************
// * 0x015C - XcBlockCrypt() // * 0x015C - XcBlockCrypt()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(348) xboxkrnl::VOID xboxkrnl::XcBlockCrypt( XBSYSAPI EXPORTNUM(348) xboxkrnl::VOID NTAPI xboxkrnl::XcBlockCrypt
(
IN ULONG dwCipher, IN ULONG dwCipher,
OUT PBYTE pbOutput, OUT PUCHAR pbOutput,
IN PBYTE pbInput, IN PUCHAR pbInput,
IN PBYTE pbKeyTable, IN PUCHAR pbKeyTable,
IN ULONG dwOp IN ULONG dwOp
) )
{ {
LOG_FUNC_BEGIN LOG_FUNC_BEGIN
LOG_FUNC_ARG(dwCipher) LOG_FUNC_ARG(dwCipher)
LOG_FUNC_ARG_OUT(pbOutput) LOG_FUNC_ARG_OUT(pbOutput)
LOG_FUNC_ARG_OUT(pbInput) LOG_FUNC_ARG_TYPE(PBYTE, pbInput)
LOG_FUNC_ARG_OUT(pbKeyTable) LOG_FUNC_ARG_TYPE(PBYTE, pbKeyTable)
LOG_FUNC_ARG(dwOp) LOG_FUNC_ARG(dwOp)
LOG_FUNC_END; LOG_FUNC_END;
@ -349,24 +378,25 @@ XBSYSAPI EXPORTNUM(348) xboxkrnl::VOID xboxkrnl::XcBlockCrypt(
// ****************************************************************** // ******************************************************************
// * 0x015D - XcBlockCryptCBC() // * 0x015D - XcBlockCryptCBC()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(349) xboxkrnl::VOID xboxkrnl::XcBlockCryptCBC( XBSYSAPI EXPORTNUM(349) xboxkrnl::VOID NTAPI xboxkrnl::XcBlockCryptCBC
(
IN ULONG dwCipher, IN ULONG dwCipher,
IN ULONG dwInputLength, IN ULONG dwInputLength,
OUT PBYTE pbOutput, OUT PUCHAR pbOutput,
IN PBYTE pbInput, IN PUCHAR pbInput,
IN PBYTE pbKeyTable, IN PUCHAR pbKeyTable,
IN ULONG dwOp, IN ULONG dwOp,
OUT PBYTE pbFeedback IN PUCHAR pbFeedback
) )
{ {
LOG_FUNC_BEGIN LOG_FUNC_BEGIN
LOG_FUNC_ARG(dwCipher) LOG_FUNC_ARG(dwCipher)
LOG_FUNC_ARG(dwInputLength) LOG_FUNC_ARG(dwInputLength)
LOG_FUNC_ARG_OUT(pbOutput) LOG_FUNC_ARG_OUT(pbOutput)
LOG_FUNC_ARG_OUT(pbInput) LOG_FUNC_ARG_TYPE(PBYTE, pbInput)
LOG_FUNC_ARG_OUT(pbKeyTable) LOG_FUNC_ARG_TYPE(PBYTE, pbKeyTable)
LOG_FUNC_ARG(dwOp) LOG_FUNC_ARG(dwOp)
LOG_FUNC_ARG_OUT(pbFeedback) LOG_FUNC_ARG_TYPE(PBYTE, pbFeedback)
LOG_FUNC_END; LOG_FUNC_END;
LOG_UNIMPLEMENTED(); LOG_UNIMPLEMENTED();
@ -375,28 +405,37 @@ XBSYSAPI EXPORTNUM(349) xboxkrnl::VOID xboxkrnl::XcBlockCryptCBC(
// ****************************************************************** // ******************************************************************
// * 0x015E - XcCryptService() // * 0x015E - XcCryptService()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(350) xboxkrnl::VOID xboxkrnl::XcCryptService( XBSYSAPI EXPORTNUM(350) xboxkrnl::ULONG NTAPI xboxkrnl::XcCryptService
(
IN ULONG dwOp, IN ULONG dwOp,
... IN PVOID pArgs
) )
{ {
LOG_FUNC_BEGIN LOG_FUNC_BEGIN
LOG_FUNC_ARG(dwOp) LOG_FUNC_ARG(dwOp)
LOG_FUNC_ARG(pArgs)
LOG_FUNC_END; LOG_FUNC_END;
ULONG ret = 0;
LOG_UNIMPLEMENTED(); LOG_UNIMPLEMENTED();
RETURN(ret);
} }
typedef PVOID PCRYPTO_VECTOR;
// ****************************************************************** // ******************************************************************
// * 0x015F - XcUpdateCrypto() // * 0x015F - XcUpdateCrypto()
// ****************************************************************** // ******************************************************************
XBSYSAPI EXPORTNUM(351) xboxkrnl::VOID xboxkrnl::XcUpdateCrypto( XBSYSAPI EXPORTNUM(351) xboxkrnl::VOID NTAPI xboxkrnl::XcUpdateCrypto
IN PVOID pNewVector, (
IN PVOID pROMVector IN PCRYPTO_VECTOR pNewVector,
) OUT PCRYPTO_VECTOR pROMVector OPTIONAL
)
{ {
LOG_FUNC_BEGIN LOG_FUNC_BEGIN
LOG_FUNC_ARG_OUT(pNewVector) LOG_FUNC_ARG(pNewVector)
LOG_FUNC_ARG_OUT(pROMVector) LOG_FUNC_ARG_OUT(pROMVector)
LOG_FUNC_END; LOG_FUNC_END;

View File

@ -41,6 +41,12 @@
#define _CXBXKRNL_INTERNAL #define _CXBXKRNL_INTERNAL
#define _XBOXKRNL_DEFEXTRN_ #define _XBOXKRNL_DEFEXTRN_
#ifdef _MSC_VER // Check if MS Visual C compiler
# pragma comment(lib, "opengl32.lib") // Compiler-specific directive to avoid manually configuration
//# pragma comment(lib, "glu32.lib") // Link libraries
# pragma comment(lib, "glew32.lib")
#endif
#include <Zydis.hpp> #include <Zydis.hpp>
#include "CxbxKrnl.h" #include "CxbxKrnl.h"
@ -48,44 +54,103 @@
#include "EmuNV2A.h" #include "EmuNV2A.h"
#include "nv2a_int.h" // from https://github.com/espes/xqemu/tree/xbox/hw/xbox #include "nv2a_int.h" // from https://github.com/espes/xqemu/tree/xbox/hw/xbox
#include <gl\glew.h>
#include <gl\GL.h>
#include <gl\GLU.h>
//#include <gl\glut.h>
#define NV_PMC_ADDR 0x00000000
#define NV_PMC_SIZE 0x001000
#define NV_PBUS_ADDR 0x00001000
#define NV_PBUS_SIZE 0x001000
#define NV_PFIFO_ADDR 0x00002000
#define NV_PFIFO_SIZE 0x002000
#define NV_PRMA_ADDR 0x00007000
#define NV_PRMA_SIZE 0x001000
#define NV_VIDEO_ADDR 0x00008000
#define NV_PVIDEO_SIZE 0x001000
#define NV_PTIMER_ADDR 0x00009000
#define NV_PTIMER_SIZE 0x001000
#define NV_PCOUNTER_ADDR 0x0000A000
#define NV_PCOUNTER_SIZE 0x001000
#define NV_PVPE_ADDR 0x0000B000
#define NV_PVPE_SIZE 0x001000
#define NV_PTV_ADDR 0x0000D000
#define NV_PTV_SIZE 0x001000
#define NV_PRMFB_ADDR 0x000A0000
#define NV_PRMFB_SIZE 0x020000
#define NV_PRMVIO_ADDR 0x000C0000
#define NV_PRMVIO_SIZE 0x001000
#define NV_PFB_ADDR 0x00100000
#define NV_PFB_SIZE 0x001000
#define NV_PSTRAPS_ADDR 0x00101000
#define NV_PSTRAPS_SIZE 0x001000
#define NV_PGRAPH_ADDR 0x00400000
#define NV_PGRAPH_SIZE 0x002000
#define NV_PCRTC_ADDR 0x00600000
#define NV_PCRTC_SIZE 0x001000
#define NV_PRMCIO_ADDR 0x00601000
#define NV_PRMCIO_SIZE 0x001000
#define NV_PRAMDAC_ADDR 0x00680000
#define NV_PRAMDAC_SIZE 0x001000
#define NV_PRMDIO_ADDR 0x00681000
#define NV_PRMDIO_SIZE 0x001000
#define NV_PRAMIN_ADDR 0x00710000
#define NV_PRAMIN_SIZE 0x100000
#define NV_USER_ADDR 0x00800000
#define NV_USER_SIZE 0x800000
struct { struct {
uint32_t pending_interrupts; uint32_t pending_interrupts;
uint32_t enabled_interrupts; uint32_t enabled_interrupts;
uint32_t regs[NV_PMC_SIZE / sizeof(uint32_t)]; // TODO : union
} pmc; } pmc;
struct { struct {
uint32_t pending_interrupts; uint32_t pending_interrupts;
uint32_t enabled_interrupts; uint32_t enabled_interrupts;
//TODO: //TODO:
// QemuThread puller_thread; // QemuThread puller_thread;
// Cache1State cache1; // Cache1State cache1;
uint32_t regs[0x2000]; uint32_t regs[NV_PFIFO_SIZE / sizeof(uint32_t)]; // TODO : union
} pfifo; } pfifo;
struct { struct {
uint32_t regs[0x1000]; uint32_t regs[NV_PVIDEO_SIZE / sizeof(uint32_t)]; // TODO : union
} pvideo; } pvideo;
struct { struct {
uint32_t pending_interrupts; uint32_t pending_interrupts;
uint32_t enabled_interrupts; uint32_t enabled_interrupts;
uint32_t numerator; uint32_t numerator;
uint32_t denominator; uint32_t denominator;
uint32_t alarm_time; uint32_t alarm_time;
uint32_t regs[NV_PTIMER_SIZE / sizeof(uint32_t)]; // TODO : union
} ptimer; } ptimer;
struct { struct {
uint32_t regs[0x1000]; uint32_t regs[NV_PFB_SIZE / sizeof(uint32_t)]; // TODO : union
} pfb; } pfb;
struct { struct {
uint32_t pending_interrupts; uint32_t pending_interrupts;
uint32_t enabled_interrupts; uint32_t enabled_interrupts;
uint32_t start; uint32_t start;
uint32_t regs[NV_PCRTC_SIZE / sizeof(uint32_t)]; // TODO : union
} pcrtc; } pcrtc;
struct { struct {
uint32_t core_clock_coeff; uint32_t core_clock_coeff;
uint64_t core_clock_freq; uint64_t core_clock_freq;
uint32_t memory_clock_coeff; uint32_t memory_clock_coeff;
uint32_t video_clock_coeff; uint32_t video_clock_coeff;
uint32_t regs[NV_PRAMDAC_SIZE / sizeof(uint32_t)]; // TODO : union
} pramdac; } pramdac;
struct {
uint32_t regs[NV_PRAMIN_SIZE / sizeof(uint32_t)]; // TODO : union
} pramin;
static void update_irq() static void update_irq()
{ {
/* PFIFO */ /* PFIFO */
@ -95,12 +160,14 @@ static void update_irq()
else { else {
pmc.pending_interrupts &= ~NV_PMC_INTR_0_PFIFO; pmc.pending_interrupts &= ~NV_PMC_INTR_0_PFIFO;
} }
if (pcrtc.pending_interrupts & pcrtc.enabled_interrupts) { if (pcrtc.pending_interrupts & pcrtc.enabled_interrupts) {
pmc.pending_interrupts |= NV_PMC_INTR_0_PCRTC; pmc.pending_interrupts |= NV_PMC_INTR_0_PCRTC;
} }
else { else {
pmc.pending_interrupts &= ~NV_PMC_INTR_0_PCRTC; pmc.pending_interrupts &= ~NV_PMC_INTR_0_PCRTC;
} }
/* TODO PGRAPH */ /* TODO PGRAPH */
/* /*
if (pgraph.pending_interrupts & pgraph.enabled_interrupts) { if (pgraph.pending_interrupts & pgraph.enabled_interrupts) {
@ -109,18 +176,19 @@ static void update_irq()
else { else {
pmc.pending_interrupts &= ~NV_PMC_INTR_0_PGRAPH; pmc.pending_interrupts &= ~NV_PMC_INTR_0_PGRAPH;
} */ } */
if (pmc.pending_interrupts && pmc.enabled_interrupts) { if (pmc.pending_interrupts && pmc.enabled_interrupts) {
// TODO Raise IRQ // TODO Raise IRQ
EmuWarning("EmuNV2A: update_irq : Raise IRQ Not Implemented"); EmuWarning("EmuNV2A update_irq() : Raise IRQ Not Implemented");
} }
else { else {
// TODO: Cancel IRQ // TODO: Cancel IRQ
EmuWarning("EmuNV2A: update_irq : Cancel IRQ Not Implemented"); EmuWarning("EmuNV2A update_irq() : Cancel IRQ Not Implemented");
} }
} }
#define DEBUG_START(DEV) const char *DebugNV_##DEV##(uint32_t addr) { switch (addr) { #define DEBUG_START(DEV) const char *DebugNV_##DEV##(uint32_t addr) { switch (addr) {
#define CASE(a) case a: return #a #define CASE(a, c) case a: return #a##c;
#define DEBUG_END(DEV) default: return "Unknown " #DEV " Address"; } } #define DEBUG_END(DEV) default: return "Unknown " #DEV " Address"; } }
DEBUG_START(PMC) DEBUG_START(PMC)
@ -131,9 +199,30 @@ DEBUG_START(PMC)
DEBUG_END(PMC) DEBUG_END(PMC)
DEBUG_START(PBUS) DEBUG_START(PBUS)
CASE(NV_PBUS_PCI_NV_0); CASE(NV_PBUS_PCI_NV_0, "_VENDOR_ID");
CASE(NV_PBUS_PCI_NV_1); CASE(NV_PBUS_PCI_NV_1);
CASE(NV_PBUS_PCI_NV_2); CASE(NV_PBUS_PCI_NV_2, "_REVISION_ID");
CASE(NV_PBUS_PCI_NV_3, "_LATENCY_TIMER");
CASE(NV_PBUS_PCI_NV_4);
CASE(NV_PBUS_PCI_NV_5);
CASE(NV_PBUS_PCI_NV_6);
CASE(NV_PBUS_PCI_NV_7);
CASE(NV_PBUS_PCI_NV_11, "_SUBSYSTEM");
CASE(NV_PBUS_PCI_NV_12, "_ROM_BASE");
CASE(NV_PBUS_PCI_NV_13, "_CAP_PTR");
CASE(NV_PBUS_PCI_NV_14, "_RESERVED");
CASE(NV_PBUS_PCI_NV_15);
CASE(NV_PBUS_PCI_NV_16, "_SUBSYSTEM");
CASE(NV_PBUS_PCI_NV_17);
CASE(NV_PBUS_PCI_NV_18, "_AGP_STATUS");
CASE(NV_PBUS_PCI_NV_19, "_AGP_COMMAND");
CASE(NV_PBUS_PCI_NV_20, "_ROM_SHADOW");
CASE(NV_PBUS_PCI_NV_21, "_VGA");
CASE(NV_PBUS_PCI_NV_22, "_SCRATCH");
CASE(NV_PBUS_PCI_NV_23, "_DT_TIMEOUT");
CASE(NV_PBUS_PCI_NV_24, "_PME");
CASE(NV_PBUS_PCI_NV_25, "_POWER_STATE");
CASE(NV_PBUS_PCI_NV_26, "_RESERVED");
DEBUG_END(PBUS) DEBUG_END(PBUS)
DEBUG_START(PFIFO) DEBUG_START(PFIFO)
@ -214,9 +303,43 @@ DEBUG_START(PRMVIO)
DEBUG_END(PRMVIO) DEBUG_END(PRMVIO)
DEBUG_START(PFB) DEBUG_START(PFB)
CASE(NV_PFB_CFG0); CASE(NV_PFB_CFG0)
CASE(NV_PFB_CSTATUS); CASE(NV_PFB_CSTATUS)
CASE(NV_PFB_WBC); CASE(NV_PFB_REFCTRL)
CASE(NV_PFB_NVM) // NV_PFB_NVM_MODE_DISABLE
CASE(NV_PFB_PIN)
CASE(NV_PFB_PAD)
CASE(NV_PFB_TIMING0)
CASE(NV_PFB_TIMING1)
CASE(NV_PFB_TIMING2)
CASE(NV_PFB_TILE)
CASE(NV_PFB_TLIMIT)
CASE(NV_PFB_TSIZE)
CASE(NV_PFB_TSTATUS)
CASE(NV_PFB_MRS)
CASE(NV_PFB_EMRS)
CASE(NV_PFB_MRS_EXT)
CASE(NV_PFB_EMRS_EXT)
CASE(NV_PFB_REF)
CASE(NV_PFB_PRE)
CASE(NV_PFB_ZCOMP)
CASE(NV_PFB_ARB_PREDIVIDER)
CASE(NV_PFB_ARB_TIMEOUT)
CASE(NV_PFB_ARB_XFER_REM)
CASE(NV_PFB_ARB_DIFF_BANK)
CASE(NV_PFB_CLOSE_PAGE0)
CASE(NV_PFB_CLOSE_PAGE1)
CASE(NV_PFB_CLOSE_PAGE2)
CASE(NV_PFB_BPARB)
CASE(NV_PFB_CMDQ0)
CASE(NV_PFB_CMDQ1)
CASE(NV_PFB_ILL_INSTR)
CASE(NV_PFB_RT)
CASE(NV_PFB_AUTOCLOSE)
CASE(NV_PFB_WBC)
CASE(NV_PFB_CMDQ_PRT)
CASE(NV_PFB_CPU_RRQ)
CASE(NV_PFB_BYPASS);
DEBUG_END(PFB) DEBUG_END(PFB)
DEBUG_START(PSTRAPS) DEBUG_START(PSTRAPS)
@ -349,16 +472,13 @@ DEBUG_START(USER)
DEBUG_END(USER) DEBUG_END(USER)
#define DEBUG_READ32(DEV) EmuWarning("EmuNV2A_" #DEV "_Read32($%08X) // %s = $%08X", addr, DebugNV_##DEV##(addr), result)
#define DEBUG_WRITE32(DEV) EmuWarning("EmuNV2A_" #DEV "_Write32($%08X, $%08X) // %s ", addr, value, DebugNV_##DEV##(addr))
#define READ32_START(DEV) uint32_t EmuNV2A_##DEV##_Read32(uint32_t addr) { uint32_t result = 0; switch (addr) { #define READ32_START(DEV) uint32_t EmuNV2A_##DEV##_Read32(uint32_t addr) { uint32_t result = 0; switch (addr) {
#define READ32_UNHANDLED(DEV) default: EmuWarning("EmuNV2A_" #DEV "_Read32 Unhandled"); #define READ32_UNHANDLED(DEV) default: EmuWarning("EmuX86_Read32 NV2A_" #DEV "(0x%08X) = 0x%08X [Unhandled, %s]", addr, result, DebugNV_##DEV##(addr)); return result;
#define READ32_END(DEV) DEBUG_READ32(DEV); } return result; } #define READ32_END(DEV) } EmuWarning("EmuX86_Read32 NV2A_" #DEV "(0x%08X) = 0x%08X [Handled, %s]", addr, result, DebugNV_##DEV##(addr)); return result; }
#define WRITE32_START(DEV) void EmuNV2A_##DEV##_Write32(uint32_t addr, uint32_t value) { DEBUG_WRITE32(DEV); switch (addr) { #define WRITE32_START(DEV) void EmuNV2A_##DEV##_Write32(uint32_t addr, uint32_t value) { switch (addr) {
#define WRITE32_UNHANDLED(DEV) default: EmuWarning("EmuNV2A_" #DEV "_Write32 Unhandled"); #define WRITE32_UNHANDLED(DEV) default: EmuWarning("EmuX86_Write32 NV2A_" #DEV "(0x%08X, 0x%08X) [Unhandled, %s]", addr, value, DebugNV_##DEV##(addr)); return;
#define WRITE32_END(DEV) } } #define WRITE32_END(DEV) } EmuWarning("EmuX86_Write32 NV2A_" #DEV "(0x%08X, 0x%08X) [Handled, %s]", addr, value, DebugNV_##DEV##(addr)); }
READ32_START(PMC) READ32_START(PMC)
@ -406,6 +526,10 @@ WRITE32_END(PBUS)
READ32_START(PFIFO) READ32_START(PFIFO)
case NV_PFIFO_RAMHT:
result = 0x03000100; // = NV_PFIFO_RAMHT_SIZE_4K | NV_PFIFO_RAMHT_BASE_ADDRESS(NumberOfPaddingBytes >> 12) | NV_PFIFO_RAMHT_SEARCH_128
case NV_PFIFO_RAMFC:
result = 0x00890110; // = ? | NV_PFIFO_RAMFC_SIZE_2K | ?
READ32_UNHANDLED(PFIFO) READ32_UNHANDLED(PFIFO)
READ32_END(PFIFO) READ32_END(PFIFO)
@ -525,6 +649,8 @@ WRITE32_END(PRMVIO)
READ32_START(PFB) READ32_START(PFB)
case NV_PFB_CFG0:
result = 3; // = NV_PFB_CFG0_PART_4
default: default:
result = pfb.regs[addr]; result = pfb.regs[addr];
READ32_END(PFB) READ32_END(PFB)
@ -635,11 +761,13 @@ WRITE32_END(PRMDIO)
READ32_START(PRAMIN) READ32_START(PRAMIN)
READ32_UNHANDLED(PRAMIN) default:
result = pramin.regs[addr];
READ32_END(PRAMIN) READ32_END(PRAMIN)
WRITE32_START(PRAMIN) WRITE32_START(PRAMIN)
WRITE32_UNHANDLED(PRAMIN) default:
pramin.regs[addr] = value;
WRITE32_END(PRAMIN) WRITE32_END(PRAMIN)
@ -659,98 +787,103 @@ typedef struct NV2ABlockInfo {
} NV2ABlockInfo; } NV2ABlockInfo;
static const NV2ABlockInfo regions[] = {{ static const NV2ABlockInfo regions[] = {{
0x000000, NV_PMC_ADDR, // = 0x000000
0x001000, NV_PMC_SIZE, // = 0x001000
EmuNV2A_PMC_Read32, EmuNV2A_PMC_Read32,
EmuNV2A_PMC_Write32, EmuNV2A_PMC_Write32,
}, { }, {
0x001000, NV_PBUS_ADDR, // = 0x001000
0x001000, NV_PBUS_SIZE, // = 0x001000
EmuNV2A_PBUS_Read32, EmuNV2A_PBUS_Read32,
EmuNV2A_PBUS_Write32, EmuNV2A_PBUS_Write32,
}, { }, {
0x002000, NV_PFIFO_ADDR, // = 0x002000
0x002000, NV_PFIFO_SIZE, // = 0x002000
EmuNV2A_PFIFO_Read32, EmuNV2A_PFIFO_Read32,
EmuNV2A_PFIFO_Write32, EmuNV2A_PFIFO_Write32,
}, { }, {
0x007000, NV_PRMA_ADDR, // = 0x007000
0x001000, NV_PRMA_SIZE, // = 0x001000
EmuNV2A_PRMA_Read32, EmuNV2A_PRMA_Read32,
EmuNV2A_PRMA_Write32, EmuNV2A_PRMA_Write32,
}, { }, {
0x008000, NV_VIDEO_ADDR, // = 0x008000
0x001000, NV_PVIDEO_SIZE, // = 0x001000
EmuNV2A_PVIDEO_Read32, EmuNV2A_PVIDEO_Read32,
EmuNV2A_PVIDEO_Write32, EmuNV2A_PVIDEO_Write32,
}, { }, {
0x009000, NV_PTIMER_ADDR, // = 0x009000
0x001000, NV_PTIMER_SIZE, // = 0x001000
EmuNV2A_PTIMER_Read32, EmuNV2A_PTIMER_Read32,
EmuNV2A_PTIMER_Write32, EmuNV2A_PTIMER_Write32,
}, { }, {
0x00a000, NV_PCOUNTER_ADDR, // = 0x00a000
0x001000, NV_PCOUNTER_SIZE, // = 0x001000
EmuNV2A_PCOUNTER_Read32, EmuNV2A_PCOUNTER_Read32,
EmuNV2A_PCOUNTER_Write32, EmuNV2A_PCOUNTER_Write32,
}, { }, {
0x00b000, NV_PVPE_ADDR, // = 0x00b000
0x001000, NV_PVPE_SIZE, // = 0x001000
EmuNV2A_PVPE_Read32, EmuNV2A_PVPE_Read32,
EmuNV2A_PVPE_Write32, EmuNV2A_PVPE_Write32,
}, { }, {
0x00d000, NV_PTV_ADDR, // = 0x00d000
0x001000, NV_PTV_SIZE, // = 0x001000
EmuNV2A_PTV_Read32, EmuNV2A_PTV_Read32,
EmuNV2A_PTV_Write32, EmuNV2A_PTV_Write32,
}, { }, {
0x0a0000, NV_PRMFB_ADDR, // = 0x0a0000
0x020000, NV_PRMFB_SIZE, // = 0x020000
EmuNV2A_PRMFB_Read32, EmuNV2A_PRMFB_Read32,
EmuNV2A_PRMFB_Write32, EmuNV2A_PRMFB_Write32,
}, { }, {
0x0c0000, NV_PRMVIO_ADDR, // = 0x0c0000
0x001000, NV_PRMVIO_SIZE, // = 0x001000
EmuNV2A_PRMVIO_Read32, EmuNV2A_PRMVIO_Read32,
EmuNV2A_PRMVIO_Write32, EmuNV2A_PRMVIO_Write32,
},{ },{
0x100000, NV_PFB_ADDR, // = 0x100000
0x001000, NV_PFB_SIZE, // = 0x001000
EmuNV2A_PFB_Read32, EmuNV2A_PFB_Read32,
EmuNV2A_PFB_Write32, EmuNV2A_PFB_Write32,
}, { }, {
0x101000, NV_PSTRAPS_ADDR, // = 0x101000
0x001000, NV_PSTRAPS_SIZE, // = 0x001000
EmuNV2A_PSTRAPS_Read32, EmuNV2A_PSTRAPS_Read32,
EmuNV2A_PSTRAPS_Write32, EmuNV2A_PSTRAPS_Write32,
}, { }, {
0x400000, NV_PGRAPH_ADDR, // = 0x400000
0x002000, NV_PGRAPH_SIZE, // = 0x002000
EmuNV2A_PGRAPH_Read32, EmuNV2A_PGRAPH_Read32,
EmuNV2A_PGRAPH_Write32, EmuNV2A_PGRAPH_Write32,
}, { }, {
0x600000, NV_PCRTC_ADDR, // = 0x600000
0x001000, NV_PCRTC_SIZE, // = 0x001000
EmuNV2A_PCRTC_Read32, EmuNV2A_PCRTC_Read32,
EmuNV2A_PCRTC_Write32, EmuNV2A_PCRTC_Write32,
}, { }, {
0x601000, NV_PRMCIO_ADDR, // = 0x601000
0x001000, NV_PRMCIO_SIZE, // = 0x001000
EmuNV2A_PRMCIO_Read32, EmuNV2A_PRMCIO_Read32,
EmuNV2A_PRMCIO_Write32, EmuNV2A_PRMCIO_Write32,
}, { }, {
0x680000, NV_PRAMDAC_ADDR, // = 0x680000
0x001000, NV_PRAMDAC_SIZE, // = 0x001000
EmuNV2A_PRAMDAC_Read32, EmuNV2A_PRAMDAC_Read32,
EmuNV2A_PRAMDAC_Write32, EmuNV2A_PRAMDAC_Write32,
}, { }, {
0x681000, NV_PRMDIO_ADDR, // = 0x681000
0x001000, NV_PRMDIO_SIZE, // = 0x001000
EmuNV2A_PRMDIO_Read32, EmuNV2A_PRMDIO_Read32,
EmuNV2A_PRMDIO_Write32, EmuNV2A_PRMDIO_Write32,
}, { }, {
0x800000, NV_PRAMIN_ADDR, // = 0x710000
0x800000, NV_PRAMIN_SIZE, // = 0x100000
EmuNV2A_PRAMIN_Read32,
EmuNV2A_PRAMIN_Write32,
},{
NV_USER_ADDR, // = 0x800000,
NV_USER_SIZE, // = 0x800000,
EmuNV2A_USER_Read32, EmuNV2A_USER_Read32,
EmuNV2A_USER_Write32, EmuNV2A_USER_Write32,
}, { }, {
@ -786,7 +919,7 @@ uint32_t EmuNV2A_Read32(uint32_t addr)
return block->read(addr - block->offset); return block->read(addr - block->offset);
} }
EmuWarning("EmuNV2A_Write32: Unhandled Read Address %08X", addr); EmuWarning("EmuNV2A_Read32: Unhandled Read Address %08X", addr);
return 0; return 0;
} }
@ -796,8 +929,276 @@ void EmuNV2A_Write32(uint32_t addr, uint32_t value)
if (block != nullptr) { if (block != nullptr) {
block->write(addr - block->offset, value); block->write(addr - block->offset, value);
return;
} }
EmuWarning("EmuNV2A_Write32: Unhandled Write Address %08X (value %08X)", addr, value); EmuWarning("EmuNV2A_Write32: Unhandled Write Address %08X (value %08X)", addr, value);
return; return;
} }
//
// OPENGL
//
//
#define X_D3DTS_STAGECOUNT 4
HDC g_EmuWindowsDC = 0;
GLuint VertexProgramIDs[4] = { 0, 0, 0, 0 };
uint ActiveVertexProgramID = 0;
GLuint TextureIDs[X_D3DTS_STAGECOUNT]= { 0, 0, 0, 0 };
// Vertex shader header, mapping Xbox1 registers to the ARB syntax (original version by KingOfC).
// Note about the use of 'conventional' attributes in here: Since we prefer to use only one shader
// for both immediate and deferred mode rendering, we alias all attributes to conventional inputs
// as much as possible. Only when there's no conventional attribute available, we use generic attributes.
// So in the following header, we use conventional attributes first, and generic attributes for the
// rest of the vertex attribute slots. This makes it possible to support immediate and deferred mode
// rendering with the same shader, and the use of the OpenGL fixed-function pipeline without a shader.
std::string DxbxVertexShaderHeader =
"!!ARBvp1.0\n"
"TEMP R0,R1,R2,R3,R4,R5,R6,R7,R8,R9,R10,R11,R12;\n"
"ADDRESS A0;\n"
#ifdef DXBX_OPENGL_CONVENTIONAL
"ATTRIB v0 = vertex.position;\n" // Was: vertex.attrib[0] (See "conventional" note above)
"ATTRIB v1 = vertex.%s;\n" // Note : We replace this with "weight" or "attrib[1]" depending GL_ARB_vertex_blend
"ATTRIB v2 = vertex.normal;\n" // Was: vertex.attrib[2]
"ATTRIB v3 = vertex.color.primary;\n" // Was: vertex.attrib[3]
"ATTRIB v4 = vertex.color.secondary;\n" // Was: vertex.attrib[4]
"ATTRIB v5 = vertex.fogcoord;\n" // Was: vertex.attrib[5]
"ATTRIB v6 = vertex.attrib[6];\n"
"ATTRIB v7 = vertex.attrib[7];\n"
"ATTRIB v8 = vertex.texcoord[0];\n" // Was: vertex.attrib[8]
"ATTRIB v9 = vertex.texcoord[1];\n" // Was: vertex.attrib[9]
"ATTRIB v10 = vertex.texcoord[2];\n" // Was: vertex.attrib[10]
"ATTRIB v11 = vertex.texcoord[3];\n" // Was: vertex.attrib[11]
#else
"ATTRIB v0 = vertex.attrib[0];\n"
"ATTRIB v1 = vertex.attrib[1];\n"
"ATTRIB v2 = vertex.attrib[2];\n"
"ATTRIB v3 = vertex.attrib[3];\n"
"ATTRIB v4 = vertex.attrib[4];\n"
"ATTRIB v5 = vertex.attrib[5];\n"
"ATTRIB v6 = vertex.attrib[6];\n"
"ATTRIB v7 = vertex.attrib[7];\n"
"ATTRIB v8 = vertex.attrib[8];\n"
"ATTRIB v9 = vertex.attrib[9];\n"
"ATTRIB v10 = vertex.attrib[10];\n"
"ATTRIB v11 = vertex.attrib[11];\n"
#endif
"ATTRIB v12 = vertex.attrib[12];\n"
"ATTRIB v13 = vertex.attrib[13];\n"
"ATTRIB v14 = vertex.attrib[14];\n"
"ATTRIB v15 = vertex.attrib[15];\n"
"OUTPUT oPos = result.position;\n"
"OUTPUT oD0 = result.color.front.primary;\n"
"OUTPUT oD1 = result.color.front.secondary;\n"
"OUTPUT oB0 = result.color.back.primary;\n"
"OUTPUT oB1 = result.color.back.secondary;\n"
"OUTPUT oPts = result.pointsize;\n"
"OUTPUT oFog = result.fogcoord;\n"
"OUTPUT oT0 = result.texcoord[0];\n"
"OUTPUT oT1 = result.texcoord[1];\n"
"OUTPUT oT2 = result.texcoord[2];\n"
"OUTPUT oT3 = result.texcoord[3];\n"
"PARAM c[] = { program.env[0..191] };\n" // All constants in 1 array declaration (requires NV_gpu_program4?)
"PARAM mvp[4] = { state.matrix.mvp };\n";
void SetupPixelFormat(HDC DC)
{
const PIXELFORMATDESCRIPTOR pfd = {
/* .nSize = */ sizeof(PIXELFORMATDESCRIPTOR), // size
/* .nVersion = */ 1, // version
/* .dwFlags = */ PFD_SUPPORT_OPENGL | PFD_DRAW_TO_WINDOW | PFD_DOUBLEBUFFER, // support double-buffering
/* .iPixelType = */ PFD_TYPE_RGBA, // color type
/* .cColorBits = */ 32, // preferred color depth
/* .cRedBits = */ 0,
/* .cRedShift = */ 0, // color bits (ignored)
/* .cGreenBits = */ 0,
/* .cGreenShift = */ 0,
/* .cBlueBits = */ 0,
/* .cBlueShift = */ 0,
/* .cAlphaBits = */ 0,
/* .cAlphaShift = */ 0, // no alpha buffer
/* .cAccumBits = */ 0,
/* .cAccumRedBits = */ 0, // no accumulation buffer,
/* .cAccumGreenBits = */ 0, // accum bits (ignored)
/* .cAccumBlueBits = */ 0,
/* .cAccumAlphaBits = */ 0,
/* .cDepthBits = */ 16, // depth buffer
/* .cStencilBits = */ 0, // no stencil buffer
/* .cAuxBuffers = */ 0, // no auxiliary buffers
/* .iLayerType= */ PFD_MAIN_PLANE, // main layer
/* .bReserved = */ 0,
/* .dwLayerMask = */ 0,
/* .dwVisibleMask = */ 0,
/* .dwDamageMask = */ 0 // no layer, visible, damage masks
};
int PixelFormat = ChoosePixelFormat(DC, &pfd);
if (PixelFormat == 0)
return;
if (SetPixelFormat(DC, PixelFormat, &pfd) != TRUE)
return;
}
// From https://github.com/inolen/redream/blob/master/src/video/gl_backend.c
static int rb_compile_shader(const char *source, GLenum shader_type, GLuint *shader)
{
size_t sourceLength = strlen(source);
*shader = glCreateShader(shader_type);
glShaderSource(*shader, 1, (const GLchar **)&source,
(const GLint *)&sourceLength);
glCompileShader(*shader);
GLint compiled;
glGetShaderiv(*shader, GL_COMPILE_STATUS, &compiled);
if (!compiled) {
// rb_print_shader_log(*shader);
glDeleteShader(*shader);
return 0;
}
return 1;
}
void DxbxCompileShader(std::string Shader)
{
int GLErrorPos;
// if (MayLog(lfUnit))
// DbgPrintf(" NV2A: New vertex program :\n" + Shader);
/*
glProgramStringARB(GL_VERTEX_PROGRAM_ARB, GL_PROGRAM_FORMAT_ASCII_ARB, Shader.size(), Shader.c_str());
// errors are catched
glGetIntegerv(GL_PROGRAM_ERROR_POSITION_ARB, &GLErrorPos);
*/
GLuint shader;
GLErrorPos = rb_compile_shader(Shader.c_str(), GL_VERTEX_SHADER, &shader); // TODO : GL_VERTEX_SHADER_ARB ??
/*
if (GLErrorPos > 0)
{
Shader.insert(GLErrorPos, "{ERROR}");
EmuWarning("Program error at position %d:", GLErrorPos);
EmuWarning((char*)glGetString(GL_PROGRAM_ERROR_STRING_ARB));
EmuWarning(Shader.c_str());
}
*/
}
void InitOpenGLContext()
{
HGLRC RC;
std::string szCode;
//glutInit();
{ // rb_init_context();
/* link in gl functions at runtime */
glewExperimental = GL_TRUE;
GLenum err = glewInit();
if (err != GLEW_OK) {
//LOG_WARNING("GLEW initialization failed: %s", glewGetErrorString(err));
return;
}
}
g_EmuWindowsDC = GetDC(g_hEmuWindow); // Actually, you can use any windowed control here
SetupPixelFormat(g_EmuWindowsDC);
RC = wglCreateContext(g_EmuWindowsDC); // makes OpenGL window out of DC
wglMakeCurrent(g_EmuWindowsDC, RC); // makes OpenGL window active
//ReadImplementationProperties(); // Determine a set of booleans indicating which OpenGL extensions are available
//ReadExtensions(); // Assign all OpenGL extension API's (DON'T call them if the extension is not available!)
// Initialize the viewport :
//Viewport.X = 0;
//Viewport.Y = 0;
//Viewport.Width = g_EmuCDPD.pPresentationParameters.BackBufferWidth;
//Viewport.Height = g_EmuCDPD.pPresentationParameters.BackBufferHeight;
//Viewport.MinZ = -1.0;
//Viewport.MaxZ = 1.0;
//DxbxUpdateTransformProjection();
//DxbxUpdateViewport();
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
// Switch to left-handed coordinate space (as per http://www.opengl.org/resources/faq/technical/transformations.htm) :
// glScalef(1.0, 1.0, -1.0);
// Set some defaults :
glEnable(GL_CULL_FACE);
glCullFace(GL_FRONT);
glEnable(GL_DEPTH_TEST);
glDepthFunc(GL_LEQUAL); // Nearer Z coordinates cover further Z
glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
glAlphaFunc(GL_GEQUAL, 0.5);
glPolygonMode(GL_FRONT_AND_BACK, GL_FILL); // GL_LINE for wireframe
/*
// TODO : The following code only works on cards that support the
// vertex program extensions (NVidia cards mainly); So for ATI we
// have to come up with another solution !!!
glGenProgramsARB(4, &VertexProgramIDs[0]);
*/
#ifdef DXBX_OPENGL_CONVENTIONAL
if (GL_ARB_vertex_blend)
DxbxVertexShaderHeader = sprintf(DxbxVertexShaderHeader, "weight");
else
DxbxVertexShaderHeader = sprintf(DxbxVertexShaderHeader, "attrib[1]");
#endif
// Precompiled shader for the fixed function pipeline :
szCode = DxbxVertexShaderHeader +
"# This part adjusts the vertex position by the super-sampling scale & offset :\n"
"MOV R0, v0;\n"
"RCP R0.w, R0.w;\n"
"MUL R0, R0, c[0];\n" // c[-96] in D3D speak - applies SuperSampleScale
// Note : Use R12 instead of oPos because this is not yet the final assignment :
"ADD R12, R0, c[1];\n" // c[-95] in D3D speak - applies SuperSampleOffset
"# This part just reads all other components and passes them to the output :\n"
"MOV oD0, v3;\n"
"MOV oD1, v4;\n"
"MOV oFog, v4.w;\n" // specular fog
// "MOV oFog, v0.z;\n" // z fog
// "RCP oFog, v0.w;\n" // w fog
"MOV oPts, v1.x;\n"
"MOV oB0, v7;\n"
"MOV oB1, v8;\n"
"MOV oT0, v9;\n"
"MOV oT1, v10;\n"
"MOV oT2, v11;\n"
"MOV oT3, v12;\n"
"# This part applies the screen-space transform (not present when '#pragma screenspace' was used) :\n"
"MUL R12.xyz, R12, c[58];\n" // c[-38] in D3D speak - see EmuNV2A_ViewportScale,
"RCP R1.x, R12.w;\n" // Originally RCC, but that"s not supported in ARBvp1.0 (use "MIN R1, R1, 0" and "MAX R1, R1, 1"?)
"MAD R12.xyz, R12, R1.x, c[59];\n" // c[-37] in D3D speak - see EmuNV2A_ViewportOffset
"# Dxbx addition : Transform the vertex to clip coordinates :\n"
"DP4 R0.x, mvp[0], R12;\n"
"DP4 R0.y, mvp[1], R12;\n"
"DP4 R0.z, mvp[2], R12;\n"
"DP4 R0.w, mvp[3], R12;\n"
"MOV R12, R0;\n"
"# Apply Z coord mapping\n"
"ADD R12.z, R12.z, R12.z;\n"
"ADD R12.z, R12.z, -R12.w;\n"
"# Here""s the final assignment to oPos :\n"
"MOV oPos, R12;\n"
"END\n"; // TODO : Check if newline is required?
// glBindProgramARB(GL_VERTEX_PROGRAM_ARB, VertexProgramIDs[0]);
DxbxCompileShader(szCode);
}

View File

@ -34,7 +34,12 @@
#ifndef EMUNV2A_H #ifndef EMUNV2A_H
#define EMUNV2A_H #define EMUNV2A_H
#define NV2A_ADDR 0xFD000000
#define NV2A_SIZE 0x01000000
uint32_t EmuNV2A_Read32(uint32_t addr); uint32_t EmuNV2A_Read32(uint32_t addr);
void EmuNV2A_Write32(uint32_t addr, uint32_t value); void EmuNV2A_Write32(uint32_t addr, uint32_t value);
void InitOpenGLContext();
#endif #endif

View File

@ -44,46 +44,61 @@
#include "EmuNV2A.h" #include "EmuNV2A.h"
uint8_t EmuX86_Read8(uint32_t addr) uint32_t EmuX86_Read32(uint32_t addr)
{ {
EmuWarning("EmuX86_Read8: Unknown Read Address %02X", addr); uint32_t value = 0;
return 0; if (addr >= NV2A_ADDR && addr < NV2A_ADDR + NV2A_SIZE)
value = EmuNV2A_Read32(addr - NV2A_ADDR);
else
EmuWarning("EmuX86_Read32(0x%08X) = 0x%08X [Unknown address]", addr, value);
return value;
} }
uint16_t EmuX86_Read16(uint32_t addr) uint16_t EmuX86_Read16(uint32_t addr)
{ {
EmuWarning("EmuX86_Read16: Unknown Read Address %04X", addr); EmuWarning("EmuX86_Read16(0x%08X) Forwarding to EmuX86_Read32...", addr);
return 0; uint16_t value;
if (addr & 2)
value = (uint16_t)EmuX86_Read32(addr - 2);
else
value = (uint16_t)(EmuX86_Read32(addr) >> 16);
EmuWarning("EmuX86_Read16(0x%08X) = 0x%04X", addr, value);
return value;
} }
uint32_t EmuX86_Read32(uint32_t addr) uint8_t EmuX86_Read8(uint32_t addr)
{ {
if (addr >= 0xFD000000 && addr <= 0xFE000000) { EmuWarning("EmuX86_Read8(0x%08X) Forwarding to EmuX86_Read16...", addr);
return EmuNV2A_Read32(addr & 0x00FFFFFF); uint8_t value;
} if (addr & 1)
value = (uint8_t)EmuX86_Read16(addr - 1);
else
value = (uint8_t)(EmuX86_Read16(addr) >> 8);
EmuWarning("EmuX86_Read32: Unknown Read Address %08X", addr); EmuWarning("EmuX86_Read8(0x%08X) = 0x%02X", addr, value);
return 0; return value;
}
void EmuX86_Write8(uint32_t addr, uint8_t value)
{
EmuWarning("EmuX86_Write8: Unknown Write Address %08X (value %02X)", addr, value);
}
void EmuX86_Write16(uint32_t addr, uint16_t value)
{
EmuWarning("EmuX86_Write8: Unknown Write Address %08X (value %04X)", addr, value);
} }
void EmuX86_Write32(uint32_t addr, uint32_t value) void EmuX86_Write32(uint32_t addr, uint32_t value)
{ {
if (addr >= 0xFD000000 && addr <= 0xFE000000) { if (addr >= NV2A_ADDR && addr < NV2A_ADDR + NV2A_SIZE) {
EmuNV2A_Write32(addr & 0x00FFFFFF, value); EmuNV2A_Write32(addr - NV2A_ADDR, value);
return; return;
} }
EmuWarning("EmuX86_Write32: Unknown Write Address %08X (value %08X)", addr, value); EmuWarning("EmuX86_Write32(0x%08X, 0x%04X) [Unknown address]", addr, value);
}
void EmuX86_Write16(uint32_t addr, uint16_t value)
{
EmuWarning("EmuX86_Write16(0x%08X, 0x%04X) [Unknown address]", addr, value);
}
void EmuX86_Write8(uint32_t addr, uint8_t value)
{
EmuWarning("EmuX86_Write8(0x%08X, 0x%02X) [Unknown address]", addr, value);
} }
inline DWORD* EmuX86_GetRegisterPointer(LPEXCEPTION_POINTERS e, Zydis::Register reg) inline DWORD* EmuX86_GetRegisterPointer(LPEXCEPTION_POINTERS e, Zydis::Register reg)

View File

@ -64,6 +64,27 @@
#define NV_PBUS_PCI_NV_2 0x00000808 #define NV_PBUS_PCI_NV_2 0x00000808
# define NV_PBUS_PCI_NV_2_REVISION_ID 0x000000FF # define NV_PBUS_PCI_NV_2_REVISION_ID 0x000000FF
# define NV_PBUS_PCI_NV_2_CLASS_CODE 0xFFFFFF00 # define NV_PBUS_PCI_NV_2_CLASS_CODE 0xFFFFFF00
#define NV_PBUS_PCI_NV_3 0x0000080C
#define NV_PBUS_PCI_NV_4 0x00000810
#define NV_PBUS_PCI_NV_5 0x00000814
#define NV_PBUS_PCI_NV_6 0x00000818
#define NV_PBUS_PCI_NV_7 0x0000081C
#define NV_PBUS_PCI_NV_11 0x0000082C
#define NV_PBUS_PCI_NV_12 0x00000830
#define NV_PBUS_PCI_NV_13 0x00000834
#define NV_PBUS_PCI_NV_14 0x00000838
#define NV_PBUS_PCI_NV_15 0x0000083C
#define NV_PBUS_PCI_NV_16 0x00000840
#define NV_PBUS_PCI_NV_17 0x00000844
#define NV_PBUS_PCI_NV_18 0x00000848
#define NV_PBUS_PCI_NV_19 0x0000084C
#define NV_PBUS_PCI_NV_20 0x00000850
#define NV_PBUS_PCI_NV_21 0x00000854
#define NV_PBUS_PCI_NV_22 0x00000858
#define NV_PBUS_PCI_NV_23 0x0000085C
#define NV_PBUS_PCI_NV_24 0x00000860
#define NV_PBUS_PCI_NV_25 0x00000864
#define NV_PBUS_PCI_NV_26 0x00000868
#define NV_PFIFO_INTR_0 0x00000100 #define NV_PFIFO_INTR_0 0x00000100
@ -592,11 +613,46 @@
#define NV_PTIMER_ALARM_0 0x00000420 #define NV_PTIMER_ALARM_0 0x00000420
#define NV_PFB_DEBUG_0 0x00000080
#define NV_PFB_CFG0 0x00000200 #define NV_PFB_CFG0 0x00000200
# define NV_PFB_CFG0_PART 0x00000003 # define NV_PFB_CFG0_PART 0x00000003
#define NV_PFB_CSTATUS 0x0000020C #define NV_PFB_CSTATUS 0x0000020C
#define NV_PFB_REFCTRL 0x00000210
#define NV_PFB_NVM 0x00000214 // NV_PFB_NVM_MODE_DISABLE
#define NV_PFB_PIN 0x00000218
#define NV_PFB_PAD 0x0000021C
#define NV_PFB_TIMING0 0x00000220
#define NV_PFB_TIMING1 0x00000224
#define NV_PFB_TIMING2 0x00000228
#define NV_PFB_TILE 0x00000240
#define NV_PFB_TLIMIT 0x00000244
#define NV_PFB_TSIZE 0x00000248
#define NV_PFB_TSTATUS 0x0000024C
#define NV_PFB_MRS 0x000002C0
#define NV_PFB_EMRS 0x000002C4
#define NV_PFB_MRS_EXT 0x000002C8
#define NV_PFB_EMRS_EXT 0x000002CC
#define NV_PFB_REF 0x000002D0
#define NV_PFB_PRE 0x000002D4
#define NV_PFB_ZCOMP 0x00000300
#define NV_PFB_ARB_PREDIVIDER 0x00000328
#define NV_PFB_ARB_TIMEOUT 0x0000032C
#define NV_PFB_ARB_XFER_REM 0x00000334
#define NV_PFB_ARB_DIFF_BANK 0x00000338
#define NV_PFB_CLOSE_PAGE0 0x00000340
#define NV_PFB_CLOSE_PAGE1 0x00000344
#define NV_PFB_CLOSE_PAGE2 0x00000348
#define NV_PFB_BPARB 0x0000034C
#define NV_PFB_CMDQ0 0x00000350
#define NV_PFB_CMDQ1 0x00000354
#define NV_PFB_ILL_INSTR 0x00000360
#define NV_PFB_RT 0x00000400
#define NV_PFB_AUTOCLOSE 0x00000404
#define NV_PFB_WBC 0x00000410 #define NV_PFB_WBC 0x00000410
# define NV_PFB_WBC_FLUSH (1 << 16) # define NV_PFB_WBC_FLUSH (1 << 16)
#define NV_PFB_CMDQ_PRT 0x00000418
#define NV_PFB_CPU_RRQ 0x00000420
#define NV_PFB_BYPASS 0x00000424
#define NV_PRAMDAC_NVPLL_COEFF 0x00000500 #define NV_PRAMDAC_NVPLL_COEFF 0x00000500