mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-29 09:09:52 -06:00
Move GL interface code out of the OpenGL video backend.
This commit is contained in:
12
Source/Core/Common/GL/GLExtensions/ARB_ES2_compatibility.h
Normal file
12
Source/Core/Common/GL/GLExtensions/ARB_ES2_compatibility.h
Normal file
@ -0,0 +1,12 @@
|
||||
// Copyright 2013 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
extern PFNGLCLEARDEPTHFPROC glClearDepthf;
|
||||
extern PFNGLDEPTHRANGEFPROC glDepthRangef;
|
||||
extern PFNGLGETSHADERPRECISIONFORMATPROC glGetShaderPrecisionFormat;
|
||||
extern PFNGLRELEASESHADERCOMPILERPROC glReleaseShaderCompiler;
|
||||
extern PFNGLSHADERBINARYPROC glShaderBinary;
|
||||
|
@ -0,0 +1,9 @@
|
||||
// Copyright 2013 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
extern PFNGLBINDFRAGDATALOCATIONINDEXEDPROC glBindFragDataLocationIndexed;
|
||||
extern PFNGLGETFRAGDATAINDEXPROC glGetFragDataIndex;
|
||||
|
9
Source/Core/Common/GL/GLExtensions/ARB_buffer_storage.h
Normal file
9
Source/Core/Common/GL/GLExtensions/ARB_buffer_storage.h
Normal file
@ -0,0 +1,9 @@
|
||||
// Copyright 2013 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
extern PFNGLBUFFERSTORAGEPROC glBufferStorage;
|
||||
extern PFNGLNAMEDBUFFERSTORAGEEXTPROC glNamedBufferStorageEXT;
|
||||
|
8
Source/Core/Common/GL/GLExtensions/ARB_clip_control.h
Normal file
8
Source/Core/Common/GL/GLExtensions/ARB_clip_control.h
Normal file
@ -0,0 +1,8 @@
|
||||
// Copyright 2013 Dolphin Emulator Project
|
||||
// Licensed under GPLv2
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
extern PFNGLCLIPCONTROLPROC glClipControl;
|
||||
|
10
Source/Core/Common/GL/GLExtensions/ARB_copy_image.h
Normal file
10
Source/Core/Common/GL/GLExtensions/ARB_copy_image.h
Normal file
@ -0,0 +1,10 @@
|
||||
// Copyright 2015 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
typedef void (GLAPIENTRY * PFNGLCOPYIMAGESUBDATAPROC) (GLuint srcName, GLenum srcTarget, GLint srcLevel, GLint srcX, GLint srcY, GLint srcZ, GLuint dstName, GLenum dstTarget, GLint dstLevel, GLint dstX, GLint dstY, GLint dstZ, GLsizei srcWidth, GLsizei srcHeight, GLsizei srcDepth);
|
||||
|
||||
extern PFNGLCOPYIMAGESUBDATAPROC glCopyImageSubData;
|
||||
|
11
Source/Core/Common/GL/GLExtensions/ARB_debug_output.h
Normal file
11
Source/Core/Common/GL/GLExtensions/ARB_debug_output.h
Normal file
@ -0,0 +1,11 @@
|
||||
// Copyright 2013 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
extern PFNGLDEBUGMESSAGECALLBACKARBPROC glDebugMessageCallbackARB;
|
||||
extern PFNGLDEBUGMESSAGECONTROLARBPROC glDebugMessageControlARB;
|
||||
extern PFNGLDEBUGMESSAGEINSERTARBPROC glDebugMessageInsertARB;
|
||||
extern PFNGLGETDEBUGMESSAGELOGARBPROC glGetDebugMessageLogARB;
|
||||
|
@ -0,0 +1,11 @@
|
||||
// Copyright 2013 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
extern PFNGLDRAWELEMENTSBASEVERTEXPROC glDrawElementsBaseVertex;
|
||||
extern PFNGLDRAWELEMENTSINSTANCEDBASEVERTEXPROC glDrawElementsInstancedBaseVertex;
|
||||
extern PFNGLDRAWRANGEELEMENTSBASEVERTEXPROC glDrawRangeElementsBaseVertex;
|
||||
extern PFNGLMULTIDRAWELEMENTSBASEVERTEXPROC glMultiDrawElementsBaseVertex;
|
||||
|
27
Source/Core/Common/GL/GLExtensions/ARB_framebuffer_object.h
Normal file
27
Source/Core/Common/GL/GLExtensions/ARB_framebuffer_object.h
Normal file
@ -0,0 +1,27 @@
|
||||
// Copyright 2013 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
extern PFNGLBINDFRAMEBUFFERPROC glBindFramebuffer;
|
||||
extern PFNGLBINDRENDERBUFFERPROC glBindRenderbuffer;
|
||||
extern PFNGLBLITFRAMEBUFFERPROC glBlitFramebuffer;
|
||||
extern PFNGLCHECKFRAMEBUFFERSTATUSPROC glCheckFramebufferStatus;
|
||||
extern PFNGLDELETEFRAMEBUFFERSPROC glDeleteFramebuffers;
|
||||
extern PFNGLDELETERENDERBUFFERSPROC glDeleteRenderbuffers;
|
||||
extern PFNGLFRAMEBUFFERRENDERBUFFERPROC glFramebufferRenderbuffer;
|
||||
extern PFNGLFRAMEBUFFERTEXTURE1DPROC glFramebufferTexture1D;
|
||||
extern PFNGLFRAMEBUFFERTEXTURE2DPROC glFramebufferTexture2D;
|
||||
extern PFNGLFRAMEBUFFERTEXTURE3DPROC glFramebufferTexture3D;
|
||||
extern PFNGLFRAMEBUFFERTEXTURELAYERPROC glFramebufferTextureLayer;
|
||||
extern PFNGLGENFRAMEBUFFERSPROC glGenFramebuffers;
|
||||
extern PFNGLGENRENDERBUFFERSPROC glGenRenderbuffers;
|
||||
extern PFNGLGENERATEMIPMAPPROC glGenerateMipmap;
|
||||
extern PFNGLGETFRAMEBUFFERATTACHMENTPARAMETERIVPROC glGetFramebufferAttachmentParameteriv;
|
||||
extern PFNGLGETRENDERBUFFERPARAMETERIVPROC glGetRenderbufferParameteriv;
|
||||
extern PFNGLISFRAMEBUFFERPROC glIsFramebuffer;
|
||||
extern PFNGLISRENDERBUFFERPROC glIsRenderbuffer;
|
||||
extern PFNGLRENDERBUFFERSTORAGEPROC glRenderbufferStorage;
|
||||
extern PFNGLRENDERBUFFERSTORAGEMULTISAMPLEPROC glRenderbufferStorageMultisample;
|
||||
|
10
Source/Core/Common/GL/GLExtensions/ARB_get_program_binary.h
Normal file
10
Source/Core/Common/GL/GLExtensions/ARB_get_program_binary.h
Normal file
@ -0,0 +1,10 @@
|
||||
// Copyright 2013 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
extern PFNGLGETPROGRAMBINARYPROC glGetProgramBinary;
|
||||
extern PFNGLPROGRAMBINARYPROC glProgramBinary;
|
||||
extern PFNGLPROGRAMPARAMETERIPROC glProgramParameteri;
|
||||
|
@ -0,0 +1,9 @@
|
||||
// Copyright 2013 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
extern PFNGLFLUSHMAPPEDBUFFERRANGEPROC glFlushMappedBufferRange;
|
||||
extern PFNGLMAPBUFFERRANGEPROC glMapBufferRange;
|
||||
|
8
Source/Core/Common/GL/GLExtensions/ARB_sample_shading.h
Normal file
8
Source/Core/Common/GL/GLExtensions/ARB_sample_shading.h
Normal file
@ -0,0 +1,8 @@
|
||||
// Copyright 2013 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
extern PFNGLMINSAMPLESHADINGARBPROC glMinSampleShading;
|
||||
|
21
Source/Core/Common/GL/GLExtensions/ARB_sampler_objects.h
Normal file
21
Source/Core/Common/GL/GLExtensions/ARB_sampler_objects.h
Normal file
@ -0,0 +1,21 @@
|
||||
// Copyright 2013 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
extern PFNGLBINDSAMPLERPROC glBindSampler;
|
||||
extern PFNGLDELETESAMPLERSPROC glDeleteSamplers;
|
||||
extern PFNGLGENSAMPLERSPROC glGenSamplers;
|
||||
extern PFNGLGETSAMPLERPARAMETERIIVPROC glGetSamplerParameterIiv;
|
||||
extern PFNGLGETSAMPLERPARAMETERIUIVPROC glGetSamplerParameterIuiv;
|
||||
extern PFNGLGETSAMPLERPARAMETERFVPROC glGetSamplerParameterfv;
|
||||
extern PFNGLGETSAMPLERPARAMETERIVPROC glGetSamplerParameteriv;
|
||||
extern PFNGLISSAMPLERPROC glIsSampler;
|
||||
extern PFNGLSAMPLERPARAMETERIIVPROC glSamplerParameterIiv;
|
||||
extern PFNGLSAMPLERPARAMETERIUIVPROC glSamplerParameterIuiv;
|
||||
extern PFNGLSAMPLERPARAMETERFPROC glSamplerParameterf;
|
||||
extern PFNGLSAMPLERPARAMETERFVPROC glSamplerParameterfv;
|
||||
extern PFNGLSAMPLERPARAMETERIPROC glSamplerParameteri;
|
||||
extern PFNGLSAMPLERPARAMETERIVPROC glSamplerParameteriv;
|
||||
|
14
Source/Core/Common/GL/GLExtensions/ARB_sync.h
Normal file
14
Source/Core/Common/GL/GLExtensions/ARB_sync.h
Normal file
@ -0,0 +1,14 @@
|
||||
// Copyright 2013 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
extern PFNGLCLIENTWAITSYNCPROC glClientWaitSync;
|
||||
extern PFNGLDELETESYNCPROC glDeleteSync;
|
||||
extern PFNGLFENCESYNCPROC glFenceSync;
|
||||
extern PFNGLGETINTEGER64VPROC glGetInteger64v;
|
||||
extern PFNGLGETSYNCIVPROC glGetSynciv;
|
||||
extern PFNGLISSYNCPROC glIsSync;
|
||||
extern PFNGLWAITSYNCPROC glWaitSync;
|
||||
|
10
Source/Core/Common/GL/GLExtensions/ARB_texture_multisample.h
Normal file
10
Source/Core/Common/GL/GLExtensions/ARB_texture_multisample.h
Normal file
@ -0,0 +1,10 @@
|
||||
// Copyright 2014 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
extern PFNGLTEXIMAGE2DMULTISAMPLEPROC glTexImage2DMultisample;
|
||||
extern PFNGLTEXIMAGE3DMULTISAMPLEPROC glTexImage3DMultisample;
|
||||
extern PFNGLGETMULTISAMPLEFVPROC glGetMultisamplefv;
|
||||
extern PFNGLSAMPLEMASKIPROC glSampleMaski;
|
@ -0,0 +1,11 @@
|
||||
// Copyright 2013 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
typedef void (*PFNGLTEXSTORAGE2DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLboolean fixedsamplelocations);
|
||||
typedef void (*PFNGLTEXSTORAGE3DMULTISAMPLEPROC) (GLenum target, GLsizei samples, GLenum internalformat, GLsizei width, GLsizei height, GLsizei depth, GLboolean fixedsamplelocations);
|
||||
|
||||
extern PFNGLTEXSTORAGE2DMULTISAMPLEPROC glTexStorage2DMultisample;
|
||||
extern PFNGLTEXSTORAGE3DMULTISAMPLEPROC glTexStorage3DMultisample;
|
@ -0,0 +1,17 @@
|
||||
// Copyright 2013 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
extern PFNGLBINDBUFFERBASEPROC glBindBufferBase;
|
||||
extern PFNGLBINDBUFFERRANGEPROC glBindBufferRange;
|
||||
extern PFNGLGETACTIVEUNIFORMBLOCKNAMEPROC glGetActiveUniformBlockName;
|
||||
extern PFNGLGETACTIVEUNIFORMBLOCKIVPROC glGetActiveUniformBlockiv;
|
||||
extern PFNGLGETACTIVEUNIFORMNAMEPROC glGetActiveUniformName;
|
||||
extern PFNGLGETACTIVEUNIFORMSIVPROC glGetActiveUniformsiv;
|
||||
extern PFNGLGETINTEGERI_VPROC glGetIntegeri_v;
|
||||
extern PFNGLGETUNIFORMBLOCKINDEXPROC glGetUniformBlockIndex;
|
||||
extern PFNGLGETUNIFORMINDICESPROC glGetUniformIndices;
|
||||
extern PFNGLUNIFORMBLOCKBINDINGPROC glUniformBlockBinding;
|
||||
|
11
Source/Core/Common/GL/GLExtensions/ARB_vertex_array_object.h
Normal file
11
Source/Core/Common/GL/GLExtensions/ARB_vertex_array_object.h
Normal file
@ -0,0 +1,11 @@
|
||||
// Copyright 2013 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
extern PFNGLBINDVERTEXARRAYPROC glBindVertexArray;
|
||||
extern PFNGLDELETEVERTEXARRAYSPROC glDeleteVertexArrays;
|
||||
extern PFNGLGENVERTEXARRAYSPROC glGenVertexArrays;
|
||||
extern PFNGLISVERTEXARRAYPROC glIsVertexArray;
|
||||
|
17
Source/Core/Common/GL/GLExtensions/ARB_viewport_array.h
Normal file
17
Source/Core/Common/GL/GLExtensions/ARB_viewport_array.h
Normal file
@ -0,0 +1,17 @@
|
||||
// Copyright 2013 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
extern PFNGLDEPTHRANGEARRAYVPROC glDepthRangeArrayv;
|
||||
extern PFNGLDEPTHRANGEINDEXEDPROC glDepthRangeIndexed;
|
||||
extern PFNGLGETDOUBLEI_VPROC glGetDoublei_v;
|
||||
extern PFNGLGETFLOATI_VPROC glGetFloati_v;
|
||||
extern PFNGLSCISSORARRAYVPROC glScissorArrayv;
|
||||
extern PFNGLSCISSORINDEXEDPROC glScissorIndexed;
|
||||
extern PFNGLSCISSORINDEXEDVPROC glScissorIndexedv;
|
||||
extern PFNGLVIEWPORTARRAYVPROC glViewportArrayv;
|
||||
extern PFNGLVIEWPORTINDEXEDFPROC glViewportIndexedf;
|
||||
extern PFNGLVIEWPORTINDEXEDFVPROC glViewportIndexedfv;
|
||||
|
2073
Source/Core/Common/GL/GLExtensions/GLExtensions.cpp
Normal file
2073
Source/Core/Common/GL/GLExtensions/GLExtensions.cpp
Normal file
File diff suppressed because it is too large
Load Diff
51
Source/Core/Common/GL/GLExtensions/GLExtensions.h
Normal file
51
Source/Core/Common/GL/GLExtensions/GLExtensions.h
Normal file
@ -0,0 +1,51 @@
|
||||
// Copyright 2013 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "Common/CommonTypes.h"
|
||||
|
||||
#include "Common/GL/GLExtensions/ARB_blend_func_extended.h"
|
||||
#include "Common/GL/GLExtensions/ARB_buffer_storage.h"
|
||||
#include "Common/GL/GLExtensions/ARB_clip_control.h"
|
||||
#include "Common/GL/GLExtensions/ARB_copy_image.h"
|
||||
#include "Common/GL/GLExtensions/ARB_debug_output.h"
|
||||
#include "Common/GL/GLExtensions/ARB_draw_elements_base_vertex.h"
|
||||
#include "Common/GL/GLExtensions/ARB_ES2_compatibility.h"
|
||||
#include "Common/GL/GLExtensions/ARB_framebuffer_object.h"
|
||||
#include "Common/GL/GLExtensions/ARB_get_program_binary.h"
|
||||
#include "Common/GL/GLExtensions/ARB_map_buffer_range.h"
|
||||
#include "Common/GL/GLExtensions/ARB_sample_shading.h"
|
||||
#include "Common/GL/GLExtensions/ARB_sampler_objects.h"
|
||||
#include "Common/GL/GLExtensions/ARB_sync.h"
|
||||
#include "Common/GL/GLExtensions/ARB_texture_multisample.h"
|
||||
#include "Common/GL/GLExtensions/ARB_texture_storage_multisample.h"
|
||||
#include "Common/GL/GLExtensions/ARB_uniform_buffer_object.h"
|
||||
#include "Common/GL/GLExtensions/ARB_vertex_array_object.h"
|
||||
#include "Common/GL/GLExtensions/ARB_viewport_array.h"
|
||||
#include "Common/GL/GLExtensions/gl_1_1.h"
|
||||
#include "Common/GL/GLExtensions/gl_1_2.h"
|
||||
#include "Common/GL/GLExtensions/gl_1_3.h"
|
||||
#include "Common/GL/GLExtensions/gl_1_4.h"
|
||||
#include "Common/GL/GLExtensions/gl_1_5.h"
|
||||
#include "Common/GL/GLExtensions/gl_2_0.h"
|
||||
#include "Common/GL/GLExtensions/gl_3_0.h"
|
||||
#include "Common/GL/GLExtensions/gl_3_1.h"
|
||||
#include "Common/GL/GLExtensions/gl_3_2.h"
|
||||
#include "Common/GL/GLExtensions/KHR_debug.h"
|
||||
#include "Common/GL/GLExtensions/NV_occlusion_query_samples.h"
|
||||
#include "Common/GL/GLExtensions/NV_primitive_restart.h"
|
||||
|
||||
namespace GLExtensions
|
||||
{
|
||||
// Initializes the interface
|
||||
bool Init();
|
||||
|
||||
// Function for checking if the hardware supports an extension
|
||||
// example: if (GLExtensions::Supports("GL_ARB_multi_map"))
|
||||
bool Supports(const std::string& name);
|
||||
|
||||
// Returns OpenGL version in format 430
|
||||
u32 Version();
|
||||
}
|
75
Source/Core/Common/GL/GLExtensions/KHR_debug.h
Normal file
75
Source/Core/Common/GL/GLExtensions/KHR_debug.h
Normal file
@ -0,0 +1,75 @@
|
||||
// Copyright 2013 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
#ifndef GL_VERSION_4_3
|
||||
|
||||
#define GL_CONTEXT_FLAG_DEBUG_BIT 0x00000002
|
||||
#define GL_STACK_OVERFLOW 0x0503
|
||||
#define GL_STACK_UNDERFLOW 0x0504
|
||||
#define GL_DEBUG_OUTPUT_SYNCHRONOUS 0x8242
|
||||
#define GL_DEBUG_NEXT_LOGGED_MESSAGE_LENGTH 0x8243
|
||||
#define GL_DEBUG_CALLBACK_FUNCTION 0x8244
|
||||
#define GL_DEBUG_CALLBACK_USER_PARAM 0x8245
|
||||
#define GL_DEBUG_SOURCE_API 0x8246
|
||||
#define GL_DEBUG_SOURCE_WINDOW_SYSTEM 0x8247
|
||||
#define GL_DEBUG_SOURCE_SHADER_COMPILER 0x8248
|
||||
#define GL_DEBUG_SOURCE_THIRD_PARTY 0x8249
|
||||
#define GL_DEBUG_SOURCE_APPLICATION 0x824A
|
||||
#define GL_DEBUG_SOURCE_OTHER 0x824B
|
||||
#define GL_DEBUG_TYPE_ERROR 0x824C
|
||||
#define GL_DEBUG_TYPE_DEPRECATED_BEHAVIOR 0x824D
|
||||
#define GL_DEBUG_TYPE_UNDEFINED_BEHAVIOR 0x824E
|
||||
#define GL_DEBUG_TYPE_PORTABILITY 0x824F
|
||||
#define GL_DEBUG_TYPE_PERFORMANCE 0x8250
|
||||
#define GL_DEBUG_TYPE_OTHER 0x8251
|
||||
#define GL_DEBUG_TYPE_MARKER 0x8268
|
||||
#define GL_DEBUG_TYPE_PUSH_GROUP 0x8269
|
||||
#define GL_DEBUG_TYPE_POP_GROUP 0x826A
|
||||
#define GL_DEBUG_SEVERITY_NOTIFICATION 0x826B
|
||||
#define GL_MAX_DEBUG_GROUP_STACK_DEPTH 0x826C
|
||||
#define GL_DEBUG_GROUP_STACK_DEPTH 0x826D
|
||||
#define GL_BUFFER 0x82E0
|
||||
#define GL_SHADER 0x82E1
|
||||
#define GL_PROGRAM 0x82E2
|
||||
#define GL_QUERY 0x82E3
|
||||
#define GL_PROGRAM_PIPELINE 0x82E4
|
||||
#define GL_SAMPLER 0x82E6
|
||||
#define GL_DISPLAY_LIST 0x82E7
|
||||
#define GL_MAX_LABEL_LENGTH 0x82E8
|
||||
#define GL_MAX_DEBUG_MESSAGE_LENGTH 0x9143
|
||||
#define GL_MAX_DEBUG_LOGGED_MESSAGES 0x9144
|
||||
#define GL_DEBUG_LOGGED_MESSAGES 0x9145
|
||||
#define GL_DEBUG_SEVERITY_HIGH 0x9146
|
||||
#define GL_DEBUG_SEVERITY_MEDIUM 0x9147
|
||||
#define GL_DEBUG_SEVERITY_LOW 0x9148
|
||||
#define GL_DEBUG_OUTPUT 0x92E0
|
||||
|
||||
typedef void (APIENTRY *GLDEBUGPROC)(GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* message, GLvoid* userParam);
|
||||
|
||||
typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECALLBACKPROC) (GLDEBUGPROC callback, const GLvoid *userParam);
|
||||
typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGECONTROLPROC) (GLenum source, GLenum type, GLenum severity, GLsizei count, const GLuint* ids, GLboolean enabled);
|
||||
typedef void (GLAPIENTRY * PFNGLDEBUGMESSAGEINSERTPROC) (GLenum source, GLenum type, GLuint id, GLenum severity, GLsizei length, const GLchar* buf);
|
||||
typedef GLuint (GLAPIENTRY * PFNGLGETDEBUGMESSAGELOGPROC) (GLuint count, GLsizei bufsize, GLenum* sources, GLenum* types, GLuint* ids, GLenum* severities, GLsizei* lengths, GLchar* messageLog);
|
||||
typedef void (GLAPIENTRY * PFNGLGETOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei bufSize, GLsizei* length, GLchar *label);
|
||||
typedef void (GLAPIENTRY * PFNGLGETOBJECTPTRLABELPROC) (void* ptr, GLsizei bufSize, GLsizei* length, GLchar *label);
|
||||
typedef void (GLAPIENTRY * PFNGLOBJECTLABELPROC) (GLenum identifier, GLuint name, GLsizei length, const GLchar* label);
|
||||
typedef void (GLAPIENTRY * PFNGLOBJECTPTRLABELPROC) (void* ptr, GLsizei length, const GLchar* label);
|
||||
typedef void (GLAPIENTRY * PFNGLPOPDEBUGGROUPPROC) (void);
|
||||
typedef void (GLAPIENTRY * PFNGLPUSHDEBUGGROUPPROC) (GLenum source, GLuint id, GLsizei length, const GLchar * message);
|
||||
|
||||
#endif
|
||||
|
||||
extern PFNGLDEBUGMESSAGECALLBACKPROC glDebugMessageCallback;
|
||||
extern PFNGLDEBUGMESSAGECONTROLPROC glDebugMessageControl;
|
||||
extern PFNGLDEBUGMESSAGEINSERTPROC glDebugMessageInsert;
|
||||
extern PFNGLGETDEBUGMESSAGELOGPROC glGetDebugMessageLog;
|
||||
extern PFNGLGETOBJECTLABELPROC glGetObjectLabel;
|
||||
extern PFNGLGETOBJECTPTRLABELPROC glGetObjectPtrLabel;
|
||||
extern PFNGLOBJECTLABELPROC glObjectLabel;
|
||||
extern PFNGLOBJECTPTRLABELPROC glObjectPtrLabel;
|
||||
extern PFNGLPOPDEBUGGROUPPROC glPopDebugGroup;
|
||||
extern PFNGLPUSHDEBUGGROUPPROC glPushDebugGroup;
|
||||
|
@ -0,0 +1,13 @@
|
||||
// Copyright 2015 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
extern PFNGLGENOCCLUSIONQUERIESNVPROC glGenOcclusionQueriesNV;
|
||||
extern PFNGLDELETEOCCLUSIONQUERIESNVPROC glDeleteOcclusionQueriesNV;
|
||||
extern PFNGLISOCCLUSIONQUERYNVPROC glIsOcclusionQueryNV;
|
||||
extern PFNGLBEGINOCCLUSIONQUERYNVPROC glBeginOcclusionQueryNV;
|
||||
extern PFNGLENDOCCLUSIONQUERYNVPROC glEndOcclusionQueryNV;
|
||||
extern PFNGLGETOCCLUSIONQUERYIVNVPROC glGetOcclusionQueryivNV;
|
||||
extern PFNGLGETOCCLUSIONQUERYUIVNVPROC glGetOcclusionQueryuivNV;
|
15
Source/Core/Common/GL/GLExtensions/NV_primitive_restart.h
Normal file
15
Source/Core/Common/GL/GLExtensions/NV_primitive_restart.h
Normal file
@ -0,0 +1,15 @@
|
||||
// Copyright 2013 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
#define GL_PRIMITIVE_RESTART_NV 0x8558
|
||||
#define GL_PRIMITIVE_RESTART_INDEX_NV 0x8559
|
||||
|
||||
typedef void (GLAPIENTRY * PFNGLPRIMITIVERESTARTINDEXNVPROC) (GLuint index);
|
||||
typedef void (GLAPIENTRY * PFNGLPRIMITIVERESTARTNVPROC) (void);
|
||||
|
||||
extern PFNGLPRIMITIVERESTARTINDEXNVPROC glPrimitiveRestartIndexNV;
|
||||
extern PFNGLPRIMITIVERESTARTNVPROC glPrimitiveRestartNV;
|
||||
|
680
Source/Core/Common/GL/GLExtensions/gl_1_1.h
Normal file
680
Source/Core/Common/GL/GLExtensions/gl_1_1.h
Normal file
@ -0,0 +1,680 @@
|
||||
// Copyright 2013 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
typedef void (GLAPIENTRY * PFNGLCLEARINDEXPROC) ( GLfloat c );
|
||||
typedef void (GLAPIENTRY * PFNGLCLEARCOLORPROC) ( GLclampf red, GLclampf green, GLclampf blue, GLclampf alpha );
|
||||
typedef void (GLAPIENTRY * PFNGLCLEARPROC) ( GLbitfield mask );
|
||||
typedef void (GLAPIENTRY * PFNGLINDEXMASKPROC) ( GLuint mask );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLORMASKPROC) ( GLboolean red, GLboolean green, GLboolean blue, GLboolean alpha );
|
||||
typedef void (GLAPIENTRY * PFNGLALPHAFUNCPROC) ( GLenum func, GLclampf ref );
|
||||
typedef void (GLAPIENTRY * PFNGLBLENDFUNCPROC) ( GLenum sfactor, GLenum dfactor );
|
||||
typedef void (GLAPIENTRY * PFNGLLOGICOPPROC) ( GLenum opcode );
|
||||
typedef void (GLAPIENTRY * PFNGLCULLFACEPROC) ( GLenum mode );
|
||||
typedef void (GLAPIENTRY * PFNGLFRONTFACEPROC) ( GLenum mode );
|
||||
typedef void (GLAPIENTRY * PFNGLPOINTSIZEPROC) ( GLfloat size );
|
||||
typedef void (GLAPIENTRY * PFNGLLINEWIDTHPROC) ( GLfloat width );
|
||||
typedef void (GLAPIENTRY * PFNGLLINESTIPPLEPROC) ( GLint factor, GLushort pattern );
|
||||
typedef void (GLAPIENTRY * PFNGLPOLYGONMODEPROC) ( GLenum face, GLenum mode );
|
||||
typedef void (GLAPIENTRY * PFNGLPOLYGONOFFSETPROC) ( GLfloat factor, GLfloat units );
|
||||
typedef void (GLAPIENTRY * PFNGLPOLYGONSTIPPLEPROC) ( const GLubyte *mask );
|
||||
typedef void (GLAPIENTRY * PFNGLGETPOLYGONSTIPPLEPROC) ( GLubyte *mask );
|
||||
typedef void (GLAPIENTRY * PFNGLEDGEFLAGPROC) ( GLboolean flag );
|
||||
typedef void (GLAPIENTRY * PFNGLEDGEFLAGVPROC) ( const GLboolean *flag );
|
||||
typedef void (GLAPIENTRY * PFNGLSCISSORPROC) ( GLint x, GLint y, GLsizei width, GLsizei height);
|
||||
typedef void (GLAPIENTRY * PFNGLCLIPPLANEPROC) ( GLenum plane, const GLdouble *equation );
|
||||
typedef void (GLAPIENTRY * PFNGLGETCLIPPLANEPROC) ( GLenum plane, GLdouble *equation );
|
||||
typedef void (GLAPIENTRY * PFNGLDRAWBUFFERPROC) ( GLenum mode );
|
||||
typedef void (GLAPIENTRY * PFNGLREADBUFFERPROC) ( GLenum mode );
|
||||
typedef void (GLAPIENTRY * PFNGLENABLEPROC) ( GLenum cap );
|
||||
typedef void (GLAPIENTRY * PFNGLDISABLEPROC) ( GLenum cap );
|
||||
typedef GLboolean (GLAPIENTRY * PFNGLISENABLEDPROC) ( GLenum cap );
|
||||
typedef void (GLAPIENTRY * PFNGLENABLECLIENTSTATEPROC) ( GLenum cap ); /* 1.1 */
|
||||
typedef void (GLAPIENTRY * PFNGLDISABLECLIENTSTATEPROC) ( GLenum cap ); /* 1.1 */
|
||||
typedef void (GLAPIENTRY * PFNGLGETBOOLEANVPROC) ( GLenum pname, GLboolean *params );
|
||||
typedef void (GLAPIENTRY * PFNGLGETDOUBLEVPROC) ( GLenum pname, GLdouble *params );
|
||||
typedef void (GLAPIENTRY * PFNGLGETFLOATVPROC) ( GLenum pname, GLfloat *params );
|
||||
typedef void (GLAPIENTRY * PFNGLGETINTEGERVPROC) ( GLenum pname, GLint *params );
|
||||
typedef void (GLAPIENTRY * PFNGLPUSHATTRIBPROC) ( GLbitfield mask );
|
||||
typedef void (GLAPIENTRY * PFNGLPOPATTRIBPROC) ( void );
|
||||
typedef void (GLAPIENTRY * PFNGLPUSHCLIENTATTRIBPROC) ( GLbitfield mask ); /* 1.1 */
|
||||
typedef void (GLAPIENTRY * PFNGLPOPCLIENTATTRIBPROC) ( void ); /* 1.1 */
|
||||
typedef GLint (GLAPIENTRY * PFNGLRENDERMODEPROC) ( GLenum mode );
|
||||
typedef GLenum (GLAPIENTRY * PFNGLGETERRORPROC) ( void );
|
||||
typedef const GLubyte* (GLAPIENTRY * PFNGLGETSTRINGPROC) ( GLenum name );
|
||||
typedef void (GLAPIENTRY * PFNGLFINISHPROC) ( void );
|
||||
typedef void (GLAPIENTRY * PFNGLFLUSHPROC) ( void );
|
||||
typedef void (GLAPIENTRY * PFNGLHINTPROC) ( GLenum target, GLenum mode );
|
||||
typedef void (GLAPIENTRY * PFNGLCLEARDEPTHPROC) ( GLclampd depth );
|
||||
typedef void (GLAPIENTRY * PFNGLDEPTHFUNCPROC) ( GLenum func );
|
||||
typedef void (GLAPIENTRY * PFNGLDEPTHMASKPROC) ( GLboolean flag );
|
||||
typedef void (GLAPIENTRY * PFNGLDEPTHRANGEPROC) ( GLclampd near_val, GLclampd far_val );
|
||||
typedef void (GLAPIENTRY * PFNGLCLEARACCUMPROC) ( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha );
|
||||
typedef void (GLAPIENTRY * PFNGLACCUMPROC) ( GLenum op, GLfloat value );
|
||||
typedef void (GLAPIENTRY * PFNGLMATRIXMODEPROC) ( GLenum mode );
|
||||
typedef void (GLAPIENTRY * PFNGLORTHOPROC) ( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val );
|
||||
typedef void (GLAPIENTRY * PFNGLFRUSTUMPROC) ( GLdouble left, GLdouble right, GLdouble bottom, GLdouble top, GLdouble near_val, GLdouble far_val );
|
||||
typedef void (GLAPIENTRY * PFNGLVIEWPORTPROC) ( GLint x, GLint y, GLsizei width, GLsizei height );
|
||||
typedef void (GLAPIENTRY * PFNGLPUSHMATRIXPROC) ( void );
|
||||
typedef void (GLAPIENTRY * PFNGLPOPMATRIXPROC) ( void );
|
||||
typedef void (GLAPIENTRY * PFNGLLOADIDENTITYPROC) ( void );
|
||||
typedef void (GLAPIENTRY * PFNGLLOADMATRIXDPROC) ( const GLdouble *m );
|
||||
typedef void (GLAPIENTRY * PFNGLLOADMATRIXFPROC) ( const GLfloat *m );
|
||||
typedef void (GLAPIENTRY * PFNGLMULTMATRIXDPROC) ( const GLdouble *m );
|
||||
typedef void (GLAPIENTRY * PFNGLMULTMATRIXFPROC) ( const GLfloat *m );
|
||||
typedef void (GLAPIENTRY * PFNGLROTATEDPROC) ( GLdouble angle, GLdouble x, GLdouble y, GLdouble z );
|
||||
typedef void (GLAPIENTRY * PFNGLROTATEFPROC) ( GLfloat angle, GLfloat x, GLfloat y, GLfloat z );
|
||||
typedef void (GLAPIENTRY * PFNGLSCALEDPROC) ( GLdouble x, GLdouble y, GLdouble z );
|
||||
typedef void (GLAPIENTRY * PFNGLSCALEFPROC) ( GLfloat x, GLfloat y, GLfloat z );
|
||||
typedef void (GLAPIENTRY * PFNGLTRANSLATEDPROC) ( GLdouble x, GLdouble y, GLdouble z );
|
||||
typedef void (GLAPIENTRY * PFNGLTRANSLATEFPROC) ( GLfloat x, GLfloat y, GLfloat z );
|
||||
typedef GLboolean (GLAPIENTRY * PFNGLISLISTPROC) ( GLuint list );
|
||||
typedef void (GLAPIENTRY * PFNGLDELETELISTSPROC) ( GLuint list, GLsizei range );
|
||||
typedef GLuint (GLAPIENTRY * PFNGLGENLISTSPROC) ( GLsizei range );
|
||||
typedef void (GLAPIENTRY * PFNGLNEWLISTPROC) ( GLuint list, GLenum mode );
|
||||
typedef void (GLAPIENTRY * PFNGLENDLISTPROC) ( void );
|
||||
typedef void (GLAPIENTRY * PFNGLCALLLISTPROC) ( GLuint list );
|
||||
typedef void (GLAPIENTRY * PFNGLCALLLISTSPROC) ( GLsizei n, GLenum type, const GLvoid *lists );
|
||||
typedef void (GLAPIENTRY * PFNGLLISTBASEPROC) ( GLuint base );
|
||||
typedef void (GLAPIENTRY * PFNGLBEGINPROC) ( GLenum mode );
|
||||
typedef void (GLAPIENTRY * PFNGLENDPROC) ( void );
|
||||
typedef void (GLAPIENTRY * PFNGLVERTEX2DPROC) ( GLdouble x, GLdouble y );
|
||||
typedef void (GLAPIENTRY * PFNGLVERTEX2FPROC) ( GLfloat x, GLfloat y );
|
||||
typedef void (GLAPIENTRY * PFNGLVERTEX2IPROC) ( GLint x, GLint y );
|
||||
typedef void (GLAPIENTRY * PFNGLVERTEX2SPROC) ( GLshort x, GLshort y );
|
||||
typedef void (GLAPIENTRY * PFNGLVERTEX3DPROC) ( GLdouble x, GLdouble y, GLdouble z );
|
||||
typedef void (GLAPIENTRY * PFNGLVERTEX3FPROC) ( GLfloat x, GLfloat y, GLfloat z );
|
||||
typedef void (GLAPIENTRY * PFNGLVERTEX3IPROC) ( GLint x, GLint y, GLint z );
|
||||
typedef void (GLAPIENTRY * PFNGLVERTEX3SPROC) ( GLshort x, GLshort y, GLshort z );
|
||||
typedef void (GLAPIENTRY * PFNGLVERTEX4DPROC) ( GLdouble x, GLdouble y, GLdouble z, GLdouble w );
|
||||
typedef void (GLAPIENTRY * PFNGLVERTEX4FPROC) ( GLfloat x, GLfloat y, GLfloat z, GLfloat w );
|
||||
typedef void (GLAPIENTRY * PFNGLVERTEX4IPROC) ( GLint x, GLint y, GLint z, GLint w );
|
||||
typedef void (GLAPIENTRY * PFNGLVERTEX4SPROC) ( GLshort x, GLshort y, GLshort z, GLshort w );
|
||||
typedef void (GLAPIENTRY * PFNGLVERTEX2DVPROC) ( const GLdouble *v );
|
||||
typedef void (GLAPIENTRY * PFNGLVERTEX2FVPROC) ( const GLfloat *v );
|
||||
typedef void (GLAPIENTRY * PFNGLVERTEX2IVPROC) ( const GLint *v );
|
||||
typedef void (GLAPIENTRY * PFNGLVERTEX2SVPROC) ( const GLshort *v );
|
||||
typedef void (GLAPIENTRY * PFNGLVERTEX3DVPROC) ( const GLdouble *v );
|
||||
typedef void (GLAPIENTRY * PFNGLVERTEX3FVPROC) ( const GLfloat *v );
|
||||
typedef void (GLAPIENTRY * PFNGLVERTEX3IVPROC) ( const GLint *v );
|
||||
typedef void (GLAPIENTRY * PFNGLVERTEX3SVPROC) ( const GLshort *v );
|
||||
typedef void (GLAPIENTRY * PFNGLVERTEX4DVPROC) ( const GLdouble *v );
|
||||
typedef void (GLAPIENTRY * PFNGLVERTEX4FVPROC) ( const GLfloat *v );
|
||||
typedef void (GLAPIENTRY * PFNGLVERTEX4IVPROC) ( const GLint *v );
|
||||
typedef void (GLAPIENTRY * PFNGLVERTEX4SVPROC) ( const GLshort *v );
|
||||
typedef void (GLAPIENTRY * PFNGLNORMAL3BPROC) ( GLbyte nx, GLbyte ny, GLbyte nz );
|
||||
typedef void (GLAPIENTRY * PFNGLNORMAL3DPROC) ( GLdouble nx, GLdouble ny, GLdouble nz );
|
||||
typedef void (GLAPIENTRY * PFNGLNORMAL3FPROC) ( GLfloat nx, GLfloat ny, GLfloat nz );
|
||||
typedef void (GLAPIENTRY * PFNGLNORMAL3IPROC) ( GLint nx, GLint ny, GLint nz );
|
||||
typedef void (GLAPIENTRY * PFNGLNORMAL3SPROC) ( GLshort nx, GLshort ny, GLshort nz );
|
||||
typedef void (GLAPIENTRY * PFNGLNORMAL3BVPROC) ( const GLbyte *v );
|
||||
typedef void (GLAPIENTRY * PFNGLNORMAL3DVPROC) ( const GLdouble *v );
|
||||
typedef void (GLAPIENTRY * PFNGLNORMAL3FVPROC) ( const GLfloat *v );
|
||||
typedef void (GLAPIENTRY * PFNGLNORMAL3IVPROC) ( const GLint *v );
|
||||
typedef void (GLAPIENTRY * PFNGLNORMAL3SVPROC) ( const GLshort *v );
|
||||
typedef void (GLAPIENTRY * PFNGLINDEXDPROC) ( GLdouble c );
|
||||
typedef void (GLAPIENTRY * PFNGLINDEXFPROC) ( GLfloat c );
|
||||
typedef void (GLAPIENTRY * PFNGLINDEXIPROC) ( GLint c );
|
||||
typedef void (GLAPIENTRY * PFNGLINDEXSPROC) ( GLshort c );
|
||||
typedef void (GLAPIENTRY * PFNGLINDEXUBPROC) ( GLubyte c ); /* 1.1 */
|
||||
typedef void (GLAPIENTRY * PFNGLINDEXDVPROC) ( const GLdouble *c );
|
||||
typedef void (GLAPIENTRY * PFNGLINDEXFVPROC) ( const GLfloat *c );
|
||||
typedef void (GLAPIENTRY * PFNGLINDEXIVPROC) ( const GLint *c );
|
||||
typedef void (GLAPIENTRY * PFNGLINDEXSVPROC) ( const GLshort *c );
|
||||
typedef void (GLAPIENTRY * PFNGLINDEXUBVPROC) ( const GLubyte *c ); /* 1.1 */
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR3BPROC) ( GLbyte red, GLbyte green, GLbyte blue );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR3DPROC) ( GLdouble red, GLdouble green, GLdouble blue );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR3FPROC) ( GLfloat red, GLfloat green, GLfloat blue );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR3IPROC) ( GLint red, GLint green, GLint blue );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR3SPROC) ( GLshort red, GLshort green, GLshort blue );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR3UBPROC) ( GLubyte red, GLubyte green, GLubyte blue );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR3UIPROC) ( GLuint red, GLuint green, GLuint blue );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR3USPROC) ( GLushort red, GLushort green, GLushort blue );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR4BPROC) ( GLbyte red, GLbyte green, GLbyte blue, GLbyte alpha );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR4DPROC) ( GLdouble red, GLdouble green, GLdouble blue, GLdouble alpha );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR4FPROC) ( GLfloat red, GLfloat green, GLfloat blue, GLfloat alpha );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR4IPROC) ( GLint red, GLint green, GLint blue, GLint alpha );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR4SPROC) ( GLshort red, GLshort green, GLshort blue, GLshort alpha );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR4UBPROC) ( GLubyte red, GLubyte green, GLubyte blue, GLubyte alpha );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR4UIPROC) ( GLuint red, GLuint green, GLuint blue, GLuint alpha );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR4USPROC) ( GLushort red, GLushort green, GLushort blue, GLushort alpha );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR3BVPROC) ( const GLbyte *v );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR3DVPROC) ( const GLdouble *v );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR3FVPROC) ( const GLfloat *v );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR3IVPROC) ( const GLint *v );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR3SVPROC) ( const GLshort *v );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR3UBVPROC) ( const GLubyte *v );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR3UIVPROC) ( const GLuint *v );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR3USVPROC) ( const GLushort *v );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR4BVPROC) ( const GLbyte *v );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR4DVPROC) ( const GLdouble *v );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR4FVPROC) ( const GLfloat *v );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR4IVPROC) ( const GLint *v );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR4SVPROC) ( const GLshort *v );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR4UBVPROC) ( const GLubyte *v );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR4UIVPROC) ( const GLuint *v );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLOR4USVPROC) ( const GLushort *v );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD1DPROC) ( GLdouble s );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD1FPROC) ( GLfloat s );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD1IPROC) ( GLint s );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD1SPROC) ( GLshort s );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD2DPROC) ( GLdouble s, GLdouble t );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD2FPROC) ( GLfloat s, GLfloat t );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD2IPROC) ( GLint s, GLint t );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD2SPROC) ( GLshort s, GLshort t );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD3DPROC) ( GLdouble s, GLdouble t, GLdouble r );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD3FPROC) ( GLfloat s, GLfloat t, GLfloat r );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD3IPROC) ( GLint s, GLint t, GLint r );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD3SPROC) ( GLshort s, GLshort t, GLshort r );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD4DPROC) ( GLdouble s, GLdouble t, GLdouble r, GLdouble q );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD4FPROC) ( GLfloat s, GLfloat t, GLfloat r, GLfloat q );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD4IPROC) ( GLint s, GLint t, GLint r, GLint q );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD4SPROC) ( GLshort s, GLshort t, GLshort r, GLshort q );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD1DVPROC) ( const GLdouble *v );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD1FVPROC) ( const GLfloat *v );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD1IVPROC) ( const GLint *v );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD1SVPROC) ( const GLshort *v );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD2DVPROC) ( const GLdouble *v );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD2FVPROC) ( const GLfloat *v );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD2IVPROC) ( const GLint *v );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD2SVPROC) ( const GLshort *v );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD3DVPROC) ( const GLdouble *v );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD3FVPROC) ( const GLfloat *v );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD3IVPROC) ( const GLint *v );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD3SVPROC) ( const GLshort *v );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD4DVPROC) ( const GLdouble *v );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD4FVPROC) ( const GLfloat *v );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD4IVPROC) ( const GLint *v );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORD4SVPROC) ( const GLshort *v );
|
||||
typedef void (GLAPIENTRY * PFNGLRASTERPOS2DPROC) ( GLdouble x, GLdouble y );
|
||||
typedef void (GLAPIENTRY * PFNGLRASTERPOS2FPROC) ( GLfloat x, GLfloat y );
|
||||
typedef void (GLAPIENTRY * PFNGLRASTERPOS2IPROC) ( GLint x, GLint y );
|
||||
typedef void (GLAPIENTRY * PFNGLRASTERPOS2SPROC) ( GLshort x, GLshort y );
|
||||
typedef void (GLAPIENTRY * PFNGLRASTERPOS3DPROC) ( GLdouble x, GLdouble y, GLdouble z );
|
||||
typedef void (GLAPIENTRY * PFNGLRASTERPOS3FPROC) ( GLfloat x, GLfloat y, GLfloat z );
|
||||
typedef void (GLAPIENTRY * PFNGLRASTERPOS3IPROC) ( GLint x, GLint y, GLint z );
|
||||
typedef void (GLAPIENTRY * PFNGLRASTERPOS3SPROC) ( GLshort x, GLshort y, GLshort z );
|
||||
typedef void (GLAPIENTRY * PFNGLRASTERPOS4DPROC) ( GLdouble x, GLdouble y, GLdouble z, GLdouble w );
|
||||
typedef void (GLAPIENTRY * PFNGLRASTERPOS4FPROC) ( GLfloat x, GLfloat y, GLfloat z, GLfloat w );
|
||||
typedef void (GLAPIENTRY * PFNGLRASTERPOS4IPROC) ( GLint x, GLint y, GLint z, GLint w );
|
||||
typedef void (GLAPIENTRY * PFNGLRASTERPOS4SPROC) ( GLshort x, GLshort y, GLshort z, GLshort w );
|
||||
typedef void (GLAPIENTRY * PFNGLRASTERPOS2DVPROC) ( const GLdouble *v );
|
||||
typedef void (GLAPIENTRY * PFNGLRASTERPOS2FVPROC) ( const GLfloat *v );
|
||||
typedef void (GLAPIENTRY * PFNGLRASTERPOS2IVPROC) ( const GLint *v );
|
||||
typedef void (GLAPIENTRY * PFNGLRASTERPOS2SVPROC) ( const GLshort *v );
|
||||
typedef void (GLAPIENTRY * PFNGLRASTERPOS3DVPROC) ( const GLdouble *v );
|
||||
typedef void (GLAPIENTRY * PFNGLRASTERPOS3FVPROC) ( const GLfloat *v );
|
||||
typedef void (GLAPIENTRY * PFNGLRASTERPOS3IVPROC) ( const GLint *v );
|
||||
typedef void (GLAPIENTRY * PFNGLRASTERPOS3SVPROC) ( const GLshort *v );
|
||||
typedef void (GLAPIENTRY * PFNGLRASTERPOS4DVPROC) ( const GLdouble *v );
|
||||
typedef void (GLAPIENTRY * PFNGLRASTERPOS4FVPROC) ( const GLfloat *v );
|
||||
typedef void (GLAPIENTRY * PFNGLRASTERPOS4IVPROC) ( const GLint *v );
|
||||
typedef void (GLAPIENTRY * PFNGLRASTERPOS4SVPROC) ( const GLshort *v );
|
||||
typedef void (GLAPIENTRY * PFNGLRECTDPROC) ( GLdouble x1, GLdouble y1, GLdouble x2, GLdouble y2 );
|
||||
typedef void (GLAPIENTRY * PFNGLRECTFPROC) ( GLfloat x1, GLfloat y1, GLfloat x2, GLfloat y2 );
|
||||
typedef void (GLAPIENTRY * PFNGLRECTIPROC) ( GLint x1, GLint y1, GLint x2, GLint y2 );
|
||||
typedef void (GLAPIENTRY * PFNGLRECTSPROC) ( GLshort x1, GLshort y1, GLshort x2, GLshort y2 );
|
||||
typedef void (GLAPIENTRY * PFNGLRECTDVPROC) ( const GLdouble *v1, const GLdouble *v2 );
|
||||
typedef void (GLAPIENTRY * PFNGLRECTFVPROC) ( const GLfloat *v1, const GLfloat *v2 );
|
||||
typedef void (GLAPIENTRY * PFNGLRECTIVPROC) ( const GLint *v1, const GLint *v2 );
|
||||
typedef void (GLAPIENTRY * PFNGLRECTSVPROC) ( const GLshort *v1, const GLshort *v2 );
|
||||
typedef void (GLAPIENTRY * PFNGLVERTEXPOINTERPROC) ( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr );
|
||||
typedef void (GLAPIENTRY * PFNGLNORMALPOINTERPROC) ( GLenum type, GLsizei stride, const GLvoid *ptr );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLORPOINTERPROC) ( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr );
|
||||
typedef void (GLAPIENTRY * PFNGLINDEXPOINTERPROC) ( GLenum type, GLsizei stride, const GLvoid *ptr );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXCOORDPOINTERPROC) ( GLint size, GLenum type, GLsizei stride, const GLvoid *ptr );
|
||||
typedef void (GLAPIENTRY * PFNGLEDGEFLAGPOINTERPROC) ( GLsizei stride, const GLvoid *ptr );
|
||||
typedef void (GLAPIENTRY * PFNGLGETPOINTERVPROC) ( GLenum pname, GLvoid **params );
|
||||
typedef void (GLAPIENTRY * PFNGLARRAYELEMENTPROC) ( GLint i );
|
||||
typedef void (GLAPIENTRY * PFNGLDRAWARRAYSPROC) ( GLenum mode, GLint first, GLsizei count );
|
||||
typedef void (GLAPIENTRY * PFNGLDRAWELEMENTSPROC) ( GLenum mode, GLsizei count, GLenum type, const GLvoid *indices );
|
||||
typedef void (GLAPIENTRY * PFNGLINTERLEAVEDARRAYSPROC) ( GLenum format, GLsizei stride, const GLvoid *pointer );
|
||||
typedef void (GLAPIENTRY * PFNGLSHADEMODELPROC) ( GLenum mode );
|
||||
typedef void (GLAPIENTRY * PFNGLLIGHTFPROC) ( GLenum light, GLenum pname, GLfloat param );
|
||||
typedef void (GLAPIENTRY * PFNGLLIGHTIPROC) ( GLenum light, GLenum pname, GLint param );
|
||||
typedef void (GLAPIENTRY * PFNGLLIGHTFVPROC) ( GLenum light, GLenum pname, const GLfloat *params );
|
||||
typedef void (GLAPIENTRY * PFNGLLIGHTIVPROC) ( GLenum light, GLenum pname, const GLint *params );
|
||||
typedef void (GLAPIENTRY * PFNGLGETLIGHTFVPROC) ( GLenum light, GLenum pname, GLfloat *params );
|
||||
typedef void (GLAPIENTRY * PFNGLGETLIGHTIVPROC) ( GLenum light, GLenum pname, GLint *params );
|
||||
typedef void (GLAPIENTRY * PFNGLLIGHTMODELFPROC) ( GLenum pname, GLfloat param );
|
||||
typedef void (GLAPIENTRY * PFNGLLIGHTMODELIPROC) ( GLenum pname, GLint param );
|
||||
typedef void (GLAPIENTRY * PFNGLLIGHTMODELFVPROC) ( GLenum pname, const GLfloat *params );
|
||||
typedef void (GLAPIENTRY * PFNGLLIGHTMODELIVPROC) ( GLenum pname, const GLint *params );
|
||||
typedef void (GLAPIENTRY * PFNGLMATERIALFPROC) ( GLenum face, GLenum pname, GLfloat param );
|
||||
typedef void (GLAPIENTRY * PFNGLMATERIALIPROC) ( GLenum face, GLenum pname, GLint param );
|
||||
typedef void (GLAPIENTRY * PFNGLMATERIALFVPROC) ( GLenum face, GLenum pname, const GLfloat *params );
|
||||
typedef void (GLAPIENTRY * PFNGLMATERIALIVPROC) ( GLenum face, GLenum pname, const GLint *params );
|
||||
typedef void (GLAPIENTRY * PFNGLGETMATERIALFVPROC) ( GLenum face, GLenum pname, GLfloat *params );
|
||||
typedef void (GLAPIENTRY * PFNGLGETMATERIALIVPROC) ( GLenum face, GLenum pname, GLint *params );
|
||||
typedef void (GLAPIENTRY * PFNGLCOLORMATERIALPROC) ( GLenum face, GLenum mode );
|
||||
typedef void (GLAPIENTRY * PFNGLPIXELZOOMPROC) ( GLfloat xfactor, GLfloat yfactor );
|
||||
typedef void (GLAPIENTRY * PFNGLPIXELSTOREFPROC) ( GLenum pname, GLfloat param );
|
||||
typedef void (GLAPIENTRY * PFNGLPIXELSTOREIPROC) ( GLenum pname, GLint param );
|
||||
typedef void (GLAPIENTRY * PFNGLPIXELTRANSFERFPROC) ( GLenum pname, GLfloat param );
|
||||
typedef void (GLAPIENTRY * PFNGLPIXELTRANSFERIPROC) ( GLenum pname, GLint param );
|
||||
typedef void (GLAPIENTRY * PFNGLPIXELMAPFVPROC) ( GLenum map, GLsizei mapsize, const GLfloat *values );
|
||||
typedef void (GLAPIENTRY * PFNGLPIXELMAPUIVPROC) ( GLenum map, GLsizei mapsize, const GLuint *values );
|
||||
typedef void (GLAPIENTRY * PFNGLPIXELMAPUSVPROC) ( GLenum map, GLsizei mapsize, const GLushort *values );
|
||||
typedef void (GLAPIENTRY * PFNGLGETPIXELMAPFVPROC) ( GLenum map, GLfloat *values );
|
||||
typedef void (GLAPIENTRY * PFNGLGETPIXELMAPUIVPROC) ( GLenum map, GLuint *values );
|
||||
typedef void (GLAPIENTRY * PFNGLGETPIXELMAPUSVPROC) ( GLenum map, GLushort *values );
|
||||
typedef void (GLAPIENTRY * PFNGLBITMAPPROC) ( GLsizei width, GLsizei height, GLfloat xorig, GLfloat yorig, GLfloat xmove, GLfloat ymove, const GLubyte *bitmap );
|
||||
typedef void (GLAPIENTRY * PFNGLREADPIXELSPROC) ( GLint x, GLint y, GLsizei width, GLsizei height, GLenum format, GLenum type, GLvoid *pixels );
|
||||
typedef void (GLAPIENTRY * PFNGLDRAWPIXELSPROC) ( GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels );
|
||||
typedef void (GLAPIENTRY * PFNGLCOPYPIXELSPROC) ( GLint x, GLint y, GLsizei width, GLsizei height, GLenum type );
|
||||
typedef void (GLAPIENTRY * PFNGLSTENCILFUNCPROC) ( GLenum func, GLint ref, GLuint mask );
|
||||
typedef void (GLAPIENTRY * PFNGLSTENCILMASKPROC) ( GLuint mask );
|
||||
typedef void (GLAPIENTRY * PFNGLSTENCILOPPROC) ( GLenum fail, GLenum zfail, GLenum zpass );
|
||||
typedef void (GLAPIENTRY * PFNGLCLEARSTENCILPROC) ( GLint s );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXGENDPROC) ( GLenum coord, GLenum pname, GLdouble param );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXGENFPROC) ( GLenum coord, GLenum pname, GLfloat param );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXGENIPROC) ( GLenum coord, GLenum pname, GLint param );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXGENDVPROC) ( GLenum coord, GLenum pname, const GLdouble *params );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXGENFVPROC) ( GLenum coord, GLenum pname, const GLfloat *params );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXGENIVPROC) ( GLenum coord, GLenum pname, const GLint *params );
|
||||
typedef void (GLAPIENTRY * PFNGLGETTEXGENDVPROC) ( GLenum coord, GLenum pname, GLdouble *params );
|
||||
typedef void (GLAPIENTRY * PFNGLGETTEXGENFVPROC) ( GLenum coord, GLenum pname, GLfloat *params );
|
||||
typedef void (GLAPIENTRY * PFNGLGETTEXGENIVPROC) ( GLenum coord, GLenum pname, GLint *params );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXENVFPROC) ( GLenum target, GLenum pname, GLfloat param );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXENVIPROC) ( GLenum target, GLenum pname, GLint param );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXENVFVPROC) ( GLenum target, GLenum pname, const GLfloat *params );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXENVIVPROC) ( GLenum target, GLenum pname, const GLint *params );
|
||||
typedef void (GLAPIENTRY * PFNGLGETTEXENVFVPROC) ( GLenum target, GLenum pname, GLfloat *params );
|
||||
typedef void (GLAPIENTRY * PFNGLGETTEXENVIVPROC) ( GLenum target, GLenum pname, GLint *params );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXPARAMETERFPROC) ( GLenum target, GLenum pname, GLfloat param );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIPROC) ( GLenum target, GLenum pname, GLint param );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXPARAMETERFVPROC) ( GLenum target, GLenum pname, const GLfloat *params );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXPARAMETERIVPROC) ( GLenum target, GLenum pname, const GLint *params );
|
||||
typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERFVPROC) ( GLenum target, GLenum pname, GLfloat *params);
|
||||
typedef void (GLAPIENTRY * PFNGLGETTEXPARAMETERIVPROC) ( GLenum target, GLenum pname, GLint *params );
|
||||
typedef void (GLAPIENTRY * PFNGLGETTEXLEVELPARAMETERFVPROC) ( GLenum target, GLint level, GLenum pname, GLfloat *params );
|
||||
typedef void (GLAPIENTRY * PFNGLGETTEXLEVELPARAMETERIVPROC) ( GLenum target, GLint level, GLenum pname, GLint *params );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXIMAGE1DPROC) ( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLint border, GLenum format, GLenum type, const GLvoid *pixels );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXIMAGE2DPROC) ( GLenum target, GLint level, GLint internalFormat, GLsizei width, GLsizei height, GLint border, GLenum format, GLenum type, const GLvoid *pixels );
|
||||
typedef void (GLAPIENTRY * PFNGLGETTEXIMAGEPROC) ( GLenum target, GLint level, GLenum format, GLenum type, GLvoid *pixels );
|
||||
typedef void (GLAPIENTRY * PFNGLGENTEXTURESPROC) ( GLsizei n, GLuint *textures );
|
||||
typedef void (GLAPIENTRY * PFNGLDELETETEXTURESPROC) ( GLsizei n, const GLuint *textures);
|
||||
typedef void (GLAPIENTRY * PFNGLBINDTEXTUREPROC) ( GLenum target, GLuint texture );
|
||||
typedef void (GLAPIENTRY * PFNGLPRIORITIZETEXTURESPROC) ( GLsizei n, const GLuint *textures, const GLclampf *priorities );
|
||||
typedef GLboolean (GLAPIENTRY * PFNGLARETEXTURESRESIDENTPROC) ( GLsizei n, const GLuint *textures, GLboolean *residences );
|
||||
typedef GLboolean (GLAPIENTRY * PFNGLISTEXTUREPROC) ( GLuint texture );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE1DPROC) ( GLenum target, GLint level, GLint xoffset, GLsizei width, GLenum format, GLenum type, const GLvoid *pixels );
|
||||
typedef void (GLAPIENTRY * PFNGLTEXSUBIMAGE2DPROC) ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLsizei width, GLsizei height, GLenum format, GLenum type, const GLvoid *pixels );
|
||||
typedef void (GLAPIENTRY * PFNGLCOPYTEXIMAGE1DPROC) ( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLint border );
|
||||
typedef void (GLAPIENTRY * PFNGLCOPYTEXIMAGE2DPROC) ( GLenum target, GLint level, GLenum internalformat, GLint x, GLint y, GLsizei width, GLsizei height, GLint border );
|
||||
typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE1DPROC) ( GLenum target, GLint level, GLint xoffset, GLint x, GLint y, GLsizei width );
|
||||
typedef void (GLAPIENTRY * PFNGLCOPYTEXSUBIMAGE2DPROC) ( GLenum target, GLint level, GLint xoffset, GLint yoffset, GLint x, GLint y, GLsizei width, GLsizei height );
|
||||
typedef void (GLAPIENTRY * PFNGLMAP1DPROC) ( GLenum target, GLdouble u1, GLdouble u2, GLint stride, GLint order, const GLdouble *points );
|
||||
typedef void (GLAPIENTRY * PFNGLMAP1FPROC) ( GLenum target, GLfloat u1, GLfloat u2, GLint stride, GLint order, const GLfloat *points );
|
||||
typedef void (GLAPIENTRY * PFNGLMAP2DPROC) ( GLenum target, GLdouble u1, GLdouble u2, GLint ustride, GLint uorder, GLdouble v1, GLdouble v2, GLint vstride, GLint vorder, const GLdouble *points );
|
||||
typedef void (GLAPIENTRY * PFNGLMAP2FPROC) ( GLenum target, GLfloat u1, GLfloat u2, GLint ustride, GLint uorder, GLfloat v1, GLfloat v2, GLint vstride, GLint vorder, const GLfloat *points );
|
||||
typedef void (GLAPIENTRY * PFNGLGETMAPDVPROC) ( GLenum target, GLenum query, GLdouble *v );
|
||||
typedef void (GLAPIENTRY * PFNGLGETMAPFVPROC) ( GLenum target, GLenum query, GLfloat *v );
|
||||
typedef void (GLAPIENTRY * PFNGLGETMAPIVPROC) ( GLenum target, GLenum query, GLint *v );
|
||||
typedef void (GLAPIENTRY * PFNGLEVALCOORD1DPROC) ( GLdouble u );
|
||||
typedef void (GLAPIENTRY * PFNGLEVALCOORD1FPROC) ( GLfloat u );
|
||||
typedef void (GLAPIENTRY * PFNGLEVALCOORD1DVPROC) ( const GLdouble *u );
|
||||
typedef void (GLAPIENTRY * PFNGLEVALCOORD1FVPROC) ( const GLfloat *u );
|
||||
typedef void (GLAPIENTRY * PFNGLEVALCOORD2DPROC) ( GLdouble u, GLdouble v );
|
||||
typedef void (GLAPIENTRY * PFNGLEVALCOORD2FPROC) ( GLfloat u, GLfloat v );
|
||||
typedef void (GLAPIENTRY * PFNGLEVALCOORD2DVPROC) ( const GLdouble *u );
|
||||
typedef void (GLAPIENTRY * PFNGLEVALCOORD2FVPROC) ( const GLfloat *u );
|
||||
typedef void (GLAPIENTRY * PFNGLMAPGRID1DPROC) ( GLint un, GLdouble u1, GLdouble u2 );
|
||||
typedef void (GLAPIENTRY * PFNGLMAPGRID1FPROC) ( GLint un, GLfloat u1, GLfloat u2 );
|
||||
typedef void (GLAPIENTRY * PFNGLMAPGRID2DPROC) ( GLint un, GLdouble u1, GLdouble u2, GLint vn, GLdouble v1, GLdouble v2 );
|
||||
typedef void (GLAPIENTRY * PFNGLMAPGRID2FPROC) ( GLint un, GLfloat u1, GLfloat u2, GLint vn, GLfloat v1, GLfloat v2 );
|
||||
typedef void (GLAPIENTRY * PFNGLEVALPOINT1PROC) ( GLint i );
|
||||
typedef void (GLAPIENTRY * PFNGLEVALPOINT2PROC) ( GLint i, GLint j );
|
||||
typedef void (GLAPIENTRY * PFNGLEVALMESH1PROC) ( GLenum mode, GLint i1, GLint i2 );
|
||||
typedef void (GLAPIENTRY * PFNGLEVALMESH2PROC) ( GLenum mode, GLint i1, GLint i2, GLint j1, GLint j2 );
|
||||
typedef void (GLAPIENTRY * PFNGLFOGFPROC) ( GLenum pname, GLfloat param );
|
||||
typedef void (GLAPIENTRY * PFNGLFOGIPROC) ( GLenum pname, GLint param );
|
||||
typedef void (GLAPIENTRY * PFNGLFOGFVPROC) ( GLenum pname, const GLfloat *params );
|
||||
typedef void (GLAPIENTRY * PFNGLFOGIVPROC) ( GLenum pname, const GLint *params );
|
||||
typedef void (GLAPIENTRY * PFNGLFEEDBACKBUFFERPROC) ( GLsizei size, GLenum type, GLfloat *buffer );
|
||||
typedef void (GLAPIENTRY * PFNGLPASSTHROUGHPROC) ( GLfloat token );
|
||||
typedef void (GLAPIENTRY * PFNGLSELECTBUFFERPROC) ( GLsizei size, GLuint *buffer );
|
||||
typedef void (GLAPIENTRY * PFNGLINITNAMESPROC) ( void );
|
||||
typedef void (GLAPIENTRY * PFNGLLOADNAMEPROC) ( GLuint name );
|
||||
typedef void (GLAPIENTRY * PFNGLPUSHNAMEPROC) ( GLuint name );
|
||||
typedef void (GLAPIENTRY * PFNGLPOPNAMEPROC) ( void );
|
||||
|
||||
extern PFNGLCLEARINDEXPROC glClearIndex;
|
||||
extern PFNGLCLEARCOLORPROC glClearColor;
|
||||
extern PFNGLCLEARPROC glClear;
|
||||
extern PFNGLINDEXMASKPROC glIndexMask;
|
||||
extern PFNGLCOLORMASKPROC glColorMask;
|
||||
extern PFNGLALPHAFUNCPROC glAlphaFunc;
|
||||
extern PFNGLBLENDFUNCPROC glBlendFunc;
|
||||
extern PFNGLLOGICOPPROC glLogicOp;
|
||||
extern PFNGLCULLFACEPROC glCullFace;
|
||||
extern PFNGLFRONTFACEPROC glFrontFace;
|
||||
extern PFNGLPOINTSIZEPROC glPointSize;
|
||||
extern PFNGLLINEWIDTHPROC glLineWidth;
|
||||
extern PFNGLLINESTIPPLEPROC glLineStipple;
|
||||
extern PFNGLPOLYGONMODEPROC glPolygonMode;
|
||||
extern PFNGLPOLYGONOFFSETPROC glPolygonOffset;
|
||||
extern PFNGLPOLYGONSTIPPLEPROC glPolygonStipple;
|
||||
extern PFNGLGETPOLYGONSTIPPLEPROC glGetPolygonStipple;
|
||||
extern PFNGLEDGEFLAGPROC glEdgeFlag;
|
||||
extern PFNGLEDGEFLAGVPROC glEdgeFlagv;
|
||||
extern PFNGLSCISSORPROC glScissor;
|
||||
extern PFNGLCLIPPLANEPROC glClipPlane;
|
||||
extern PFNGLGETCLIPPLANEPROC glGetClipPlane;
|
||||
extern PFNGLDRAWBUFFERPROC glDrawBuffer;
|
||||
extern PFNGLREADBUFFERPROC glReadBuffer;
|
||||
extern PFNGLENABLEPROC glEnable;
|
||||
extern PFNGLDISABLEPROC glDisable;
|
||||
extern PFNGLISENABLEDPROC glIsEnabled;
|
||||
extern PFNGLENABLECLIENTSTATEPROC glEnableClientState;
|
||||
extern PFNGLDISABLECLIENTSTATEPROC glDisableClientState;
|
||||
extern PFNGLGETBOOLEANVPROC glGetBooleanv;
|
||||
extern PFNGLGETDOUBLEVPROC glGetDoublev;
|
||||
extern PFNGLGETFLOATVPROC glGetFloatv;
|
||||
extern PFNGLGETINTEGERVPROC glGetIntegerv;
|
||||
extern PFNGLPUSHATTRIBPROC glPushAttrib;
|
||||
extern PFNGLPOPATTRIBPROC glPopAttrib;
|
||||
extern PFNGLPUSHCLIENTATTRIBPROC glPushClientAttrib;
|
||||
extern PFNGLPOPCLIENTATTRIBPROC glPopClientAttrib;
|
||||
extern PFNGLRENDERMODEPROC glRenderMode;
|
||||
extern PFNGLGETERRORPROC glGetError;
|
||||
extern PFNGLGETSTRINGPROC glGetString;
|
||||
extern PFNGLFINISHPROC glFinish;
|
||||
extern PFNGLFLUSHPROC glFlush;
|
||||
extern PFNGLHINTPROC glHint;
|
||||
extern PFNGLCLEARDEPTHPROC glClearDepth;
|
||||
extern PFNGLDEPTHFUNCPROC glDepthFunc;
|
||||
extern PFNGLDEPTHMASKPROC glDepthMask;
|
||||
extern PFNGLDEPTHRANGEPROC glDepthRange;
|
||||
extern PFNGLCLEARACCUMPROC glClearAccum;
|
||||
extern PFNGLACCUMPROC glAccum;
|
||||
extern PFNGLMATRIXMODEPROC glMatrixMode;
|
||||
extern PFNGLORTHOPROC glOrtho;
|
||||
extern PFNGLFRUSTUMPROC glFrustum;
|
||||
extern PFNGLVIEWPORTPROC glViewport;
|
||||
extern PFNGLPUSHMATRIXPROC glPushMatrix;
|
||||
extern PFNGLPOPMATRIXPROC glPopMatrix;
|
||||
extern PFNGLLOADIDENTITYPROC glLoadIdentity;
|
||||
extern PFNGLLOADMATRIXDPROC glLoadMatrixd;
|
||||
extern PFNGLLOADMATRIXFPROC glLoadMatrixf;
|
||||
extern PFNGLMULTMATRIXDPROC glMultMatrixd;
|
||||
extern PFNGLMULTMATRIXFPROC glMultMatrixf;
|
||||
extern PFNGLROTATEDPROC glRotated;
|
||||
extern PFNGLROTATEFPROC glRotatef;
|
||||
extern PFNGLSCALEDPROC glScaled;
|
||||
extern PFNGLSCALEFPROC glScalef;
|
||||
extern PFNGLTRANSLATEDPROC glTranslated;
|
||||
extern PFNGLTRANSLATEFPROC glTranslatef;
|
||||
extern PFNGLISLISTPROC glIsList;
|
||||
extern PFNGLDELETELISTSPROC glDeleteLists;
|
||||
extern PFNGLGENLISTSPROC glGenLists;
|
||||
extern PFNGLNEWLISTPROC glNewList;
|
||||
extern PFNGLENDLISTPROC glEndList;
|
||||
extern PFNGLCALLLISTPROC glCallList;
|
||||
extern PFNGLCALLLISTSPROC glCallLists;
|
||||
extern PFNGLLISTBASEPROC glListBase;
|
||||
extern PFNGLBEGINPROC glBegin;
|
||||
extern PFNGLENDPROC glEnd;
|
||||
extern PFNGLVERTEX2DPROC glVertex2d;
|
||||
extern PFNGLVERTEX2FPROC glVertex2f;
|
||||
extern PFNGLVERTEX2IPROC glVertex2i;
|
||||
extern PFNGLVERTEX2SPROC glVertex2s;
|
||||
extern PFNGLVERTEX3DPROC glVertex3d;
|
||||
extern PFNGLVERTEX3FPROC glVertex3f;
|
||||
extern PFNGLVERTEX3IPROC glVertex3i;
|
||||
extern PFNGLVERTEX3SPROC glVertex3s;
|
||||
extern PFNGLVERTEX4DPROC glVertex4d;
|
||||
extern PFNGLVERTEX4FPROC glVertex4f;
|
||||
extern PFNGLVERTEX4IPROC glVertex4i;
|
||||
extern PFNGLVERTEX4SPROC glVertex4s;
|
||||
extern PFNGLVERTEX2DVPROC glVertex2dv;
|
||||
extern PFNGLVERTEX2FVPROC glVertex2fv;
|
||||
extern PFNGLVERTEX2IVPROC glVertex2iv;
|
||||
extern PFNGLVERTEX2SVPROC glVertex2sv;
|
||||
extern PFNGLVERTEX3DVPROC glVertex3dv;
|
||||
extern PFNGLVERTEX3FVPROC glVertex3fv;
|
||||
extern PFNGLVERTEX3IVPROC glVertex3iv;
|
||||
extern PFNGLVERTEX3SVPROC glVertex3sv;
|
||||
extern PFNGLVERTEX4DVPROC glVertex4dv;
|
||||
extern PFNGLVERTEX4FVPROC glVertex4fv;
|
||||
extern PFNGLVERTEX4IVPROC glVertex4iv;
|
||||
extern PFNGLVERTEX4SVPROC glVertex4sv;
|
||||
extern PFNGLNORMAL3BPROC glNormal3b;
|
||||
extern PFNGLNORMAL3DPROC glNormal3d;
|
||||
extern PFNGLNORMAL3FPROC glNormal3f;
|
||||
extern PFNGLNORMAL3IPROC glNormal3i;
|
||||
extern PFNGLNORMAL3SPROC glNormal3s;
|
||||
extern PFNGLNORMAL3BVPROC glNormal3bv;
|
||||
extern PFNGLNORMAL3DVPROC glNormal3dv;
|
||||
extern PFNGLNORMAL3FVPROC glNormal3fv;
|
||||
extern PFNGLNORMAL3IVPROC glNormal3iv;
|
||||
extern PFNGLNORMAL3SVPROC glNormal3sv;
|
||||
extern PFNGLINDEXDPROC glIndexd;
|
||||
extern PFNGLINDEXFPROC glIndexf;
|
||||
extern PFNGLINDEXIPROC glIndexi;
|
||||
extern PFNGLINDEXSPROC glIndexs;
|
||||
extern PFNGLINDEXUBPROC glIndexub;
|
||||
extern PFNGLINDEXDVPROC glIndexdv;
|
||||
extern PFNGLINDEXFVPROC glIndexfv;
|
||||
extern PFNGLINDEXIVPROC glIndexiv;
|
||||
extern PFNGLINDEXSVPROC glIndexsv;
|
||||
extern PFNGLINDEXUBVPROC glIndexubv;
|
||||
extern PFNGLCOLOR3BPROC glColor3b;
|
||||
extern PFNGLCOLOR3DPROC glColor3d;
|
||||
extern PFNGLCOLOR3FPROC glColor3f;
|
||||
extern PFNGLCOLOR3IPROC glColor3i;
|
||||
extern PFNGLCOLOR3SPROC glColor3s;
|
||||
extern PFNGLCOLOR3UBPROC glColor3ub;
|
||||
extern PFNGLCOLOR3UIPROC glColor3ui;
|
||||
extern PFNGLCOLOR3USPROC glColor3us;
|
||||
extern PFNGLCOLOR4BPROC glColor4b;
|
||||
extern PFNGLCOLOR4DPROC glColor4d;
|
||||
extern PFNGLCOLOR4FPROC glColor4f;
|
||||
extern PFNGLCOLOR4IPROC glColor4i;
|
||||
extern PFNGLCOLOR4SPROC glColor4s;
|
||||
extern PFNGLCOLOR4UBPROC glColor4ub;
|
||||
extern PFNGLCOLOR4UIPROC glColor4ui;
|
||||
extern PFNGLCOLOR4USPROC glColor4us;
|
||||
extern PFNGLCOLOR3BVPROC glColor3bv;
|
||||
extern PFNGLCOLOR3DVPROC glColor3dv;
|
||||
extern PFNGLCOLOR3FVPROC glColor3fv;
|
||||
extern PFNGLCOLOR3IVPROC glColor3iv;
|
||||
extern PFNGLCOLOR3SVPROC glColor3sv;
|
||||
extern PFNGLCOLOR3UBVPROC glColor3ubv;
|
||||
extern PFNGLCOLOR3UIVPROC glColor3uiv;
|
||||
extern PFNGLCOLOR3USVPROC glColor3usv;
|
||||
extern PFNGLCOLOR4BVPROC glColor4bv;
|
||||
extern PFNGLCOLOR4DVPROC glColor4dv;
|
||||
extern PFNGLCOLOR4FVPROC glColor4fv;
|
||||
extern PFNGLCOLOR4IVPROC glColor4iv;
|
||||
extern PFNGLCOLOR4SVPROC glColor4sv;
|
||||
extern PFNGLCOLOR4UBVPROC glColor4ubv;
|
||||
extern PFNGLCOLOR4UIVPROC glColor4uiv;
|
||||
extern PFNGLCOLOR4USVPROC glColor4usv;
|
||||
extern PFNGLTEXCOORD1DPROC glTexCoord1d;
|
||||
extern PFNGLTEXCOORD1FPROC glTexCoord1f;
|
||||
extern PFNGLTEXCOORD1IPROC glTexCoord1i;
|
||||
extern PFNGLTEXCOORD1SPROC glTexCoord1s;
|
||||
extern PFNGLTEXCOORD2DPROC glTexCoord2d;
|
||||
extern PFNGLTEXCOORD2FPROC glTexCoord2f;
|
||||
extern PFNGLTEXCOORD2IPROC glTexCoord2i;
|
||||
extern PFNGLTEXCOORD2SPROC glTexCoord2s;
|
||||
extern PFNGLTEXCOORD3DPROC glTexCoord3d;
|
||||
extern PFNGLTEXCOORD3FPROC glTexCoord3f;
|
||||
extern PFNGLTEXCOORD3IPROC glTexCoord3i;
|
||||
extern PFNGLTEXCOORD3SPROC glTexCoord3s;
|
||||
extern PFNGLTEXCOORD4DPROC glTexCoord4d;
|
||||
extern PFNGLTEXCOORD4FPROC glTexCoord4f;
|
||||
extern PFNGLTEXCOORD4IPROC glTexCoord4i;
|
||||
extern PFNGLTEXCOORD4SPROC glTexCoord4s;
|
||||
extern PFNGLTEXCOORD1DVPROC glTexCoord1dv;
|
||||
extern PFNGLTEXCOORD1FVPROC glTexCoord1fv;
|
||||
extern PFNGLTEXCOORD1IVPROC glTexCoord1iv;
|
||||
extern PFNGLTEXCOORD1SVPROC glTexCoord1sv;
|
||||
extern PFNGLTEXCOORD2DVPROC glTexCoord2dv;
|
||||
extern PFNGLTEXCOORD2FVPROC glTexCoord2fv;
|
||||
extern PFNGLTEXCOORD2IVPROC glTexCoord2iv;
|
||||
extern PFNGLTEXCOORD2SVPROC glTexCoord2sv;
|
||||
extern PFNGLTEXCOORD3DVPROC glTexCoord3dv;
|
||||
extern PFNGLTEXCOORD3FVPROC glTexCoord3fv;
|
||||
extern PFNGLTEXCOORD3IVPROC glTexCoord3iv;
|
||||
extern PFNGLTEXCOORD3SVPROC glTexCoord3sv;
|
||||
extern PFNGLTEXCOORD4DVPROC glTexCoord4dv;
|
||||
extern PFNGLTEXCOORD4FVPROC glTexCoord4fv;
|
||||
extern PFNGLTEXCOORD4IVPROC glTexCoord4iv;
|
||||
extern PFNGLTEXCOORD4SVPROC glTexCoord4sv;
|
||||
extern PFNGLRASTERPOS2DPROC glRasterPos2d;
|
||||
extern PFNGLRASTERPOS2FPROC glRasterPos2f;
|
||||
extern PFNGLRASTERPOS2IPROC glRasterPos2i;
|
||||
extern PFNGLRASTERPOS2SPROC glRasterPos2s;
|
||||
extern PFNGLRASTERPOS3DPROC glRasterPos3d;
|
||||
extern PFNGLRASTERPOS3FPROC glRasterPos3f;
|
||||
extern PFNGLRASTERPOS3IPROC glRasterPos3i;
|
||||
extern PFNGLRASTERPOS3SPROC glRasterPos3s;
|
||||
extern PFNGLRASTERPOS4DPROC glRasterPos4d;
|
||||
extern PFNGLRASTERPOS4FPROC glRasterPos4f;
|
||||
extern PFNGLRASTERPOS4IPROC glRasterPos4i;
|
||||
extern PFNGLRASTERPOS4SPROC glRasterPos4s;
|
||||
extern PFNGLRASTERPOS2DVPROC glRasterPos2dv;
|
||||
extern PFNGLRASTERPOS2FVPROC glRasterPos2fv;
|
||||
extern PFNGLRASTERPOS2IVPROC glRasterPos2iv;
|
||||
extern PFNGLRASTERPOS2SVPROC glRasterPos2sv;
|
||||
extern PFNGLRASTERPOS3DVPROC glRasterPos3dv;
|
||||
extern PFNGLRASTERPOS3FVPROC glRasterPos3fv;
|
||||
extern PFNGLRASTERPOS3IVPROC glRasterPos3iv;
|
||||
extern PFNGLRASTERPOS3SVPROC glRasterPos3sv;
|
||||
extern PFNGLRASTERPOS4DVPROC glRasterPos4dv;
|
||||
extern PFNGLRASTERPOS4FVPROC glRasterPos4fv;
|
||||
extern PFNGLRASTERPOS4IVPROC glRasterPos4iv;
|
||||
extern PFNGLRASTERPOS4SVPROC glRasterPos4sv;
|
||||
extern PFNGLRECTDPROC glRectd;
|
||||
extern PFNGLRECTFPROC glRectf;
|
||||
extern PFNGLRECTIPROC glRecti;
|
||||
extern PFNGLRECTSPROC glRects;
|
||||
extern PFNGLRECTDVPROC glRectdv;
|
||||
extern PFNGLRECTFVPROC glRectfv;
|
||||
extern PFNGLRECTIVPROC glRectiv;
|
||||
extern PFNGLRECTSVPROC glRectsv;
|
||||
extern PFNGLVERTEXPOINTERPROC glVertexPointer;
|
||||
extern PFNGLNORMALPOINTERPROC glNormalPointer;
|
||||
extern PFNGLCOLORPOINTERPROC glColorPointer;
|
||||
extern PFNGLINDEXPOINTERPROC glIndexPointer;
|
||||
extern PFNGLTEXCOORDPOINTERPROC glTexCoordPointer;
|
||||
extern PFNGLEDGEFLAGPOINTERPROC glEdgeFlagPointer;
|
||||
extern PFNGLGETPOINTERVPROC glGetPointerv;
|
||||
extern PFNGLARRAYELEMENTPROC glArrayElement;
|
||||
extern PFNGLDRAWARRAYSPROC glDrawArrays;
|
||||
extern PFNGLDRAWELEMENTSPROC glDrawElements;
|
||||
extern PFNGLINTERLEAVEDARRAYSPROC glInterleavedArrays;
|
||||
extern PFNGLSHADEMODELPROC glShadeModel;
|
||||
extern PFNGLLIGHTFPROC glLightf;
|
||||
extern PFNGLLIGHTIPROC glLighti;
|
||||
extern PFNGLLIGHTFVPROC glLightfv;
|
||||
extern PFNGLLIGHTIVPROC glLightiv;
|
||||
extern PFNGLGETLIGHTFVPROC glGetLightfv;
|
||||
extern PFNGLGETLIGHTIVPROC glGetLightiv;
|
||||
extern PFNGLLIGHTMODELFPROC glLightModelf;
|
||||
extern PFNGLLIGHTMODELIPROC glLightModeli;
|
||||
extern PFNGLLIGHTMODELFVPROC glLightModelfv;
|
||||
extern PFNGLLIGHTMODELIVPROC glLightModeliv;
|
||||
extern PFNGLMATERIALFPROC glMaterialf;
|
||||
extern PFNGLMATERIALIPROC glMateriali;
|
||||
extern PFNGLMATERIALFVPROC glMaterialfv;
|
||||
extern PFNGLMATERIALIVPROC glMaterialiv;
|
||||
extern PFNGLGETMATERIALFVPROC glGetMaterialfv;
|
||||
extern PFNGLGETMATERIALIVPROC glGetMaterialiv;
|
||||
extern PFNGLCOLORMATERIALPROC glColorMaterial;
|
||||
extern PFNGLPIXELZOOMPROC glPixelZoom;
|
||||
extern PFNGLPIXELSTOREFPROC glPixelStoref;
|
||||
extern PFNGLPIXELSTOREIPROC glPixelStorei;
|
||||
extern PFNGLPIXELTRANSFERFPROC glPixelTransferf;
|
||||
extern PFNGLPIXELTRANSFERIPROC glPixelTransferi;
|
||||
extern PFNGLPIXELMAPFVPROC glPixelMapfv;
|
||||
extern PFNGLPIXELMAPUIVPROC glPixelMapuiv;
|
||||
extern PFNGLPIXELMAPUSVPROC glPixelMapusv;
|
||||
extern PFNGLGETPIXELMAPFVPROC glGetPixelMapfv;
|
||||
extern PFNGLGETPIXELMAPUIVPROC glGetPixelMapuiv;
|
||||
extern PFNGLGETPIXELMAPUSVPROC glGetPixelMapusv;
|
||||
extern PFNGLBITMAPPROC glBitmap;
|
||||
extern PFNGLREADPIXELSPROC glReadPixels;
|
||||
extern PFNGLDRAWPIXELSPROC glDrawPixels;
|
||||
extern PFNGLCOPYPIXELSPROC glCopyPixels;
|
||||
extern PFNGLSTENCILFUNCPROC glStencilFunc;
|
||||
extern PFNGLSTENCILMASKPROC glStencilMask;
|
||||
extern PFNGLSTENCILOPPROC glStencilOp;
|
||||
extern PFNGLCLEARSTENCILPROC glClearStencil;
|
||||
extern PFNGLTEXGENDPROC glTexGend;
|
||||
extern PFNGLTEXGENFPROC glTexGenf;
|
||||
extern PFNGLTEXGENIPROC glTexGeni;
|
||||
extern PFNGLTEXGENDVPROC glTexGendv;
|
||||
extern PFNGLTEXGENFVPROC glTexGenfv;
|
||||
extern PFNGLTEXGENIVPROC glTexGeniv;
|
||||
extern PFNGLGETTEXGENDVPROC glGetTexGendv;
|
||||
extern PFNGLGETTEXGENFVPROC glGetTexGenfv;
|
||||
extern PFNGLGETTEXGENIVPROC glGetTexGeniv;
|
||||
extern PFNGLTEXENVFPROC glTexEnvf;
|
||||
extern PFNGLTEXENVIPROC glTexEnvi;
|
||||
extern PFNGLTEXENVFVPROC glTexEnvfv;
|
||||
extern PFNGLTEXENVIVPROC glTexEnviv;
|
||||
extern PFNGLGETTEXENVFVPROC glGetTexEnvfv;
|
||||
extern PFNGLGETTEXENVIVPROC glGetTexEnviv;
|
||||
extern PFNGLTEXPARAMETERFPROC glTexParameterf;
|
||||
extern PFNGLTEXPARAMETERIPROC glTexParameteri;
|
||||
extern PFNGLTEXPARAMETERFVPROC glTexParameterfv;
|
||||
extern PFNGLTEXPARAMETERIVPROC glTexParameteriv;
|
||||
extern PFNGLGETTEXPARAMETERFVPROC glGetTexParameterfv;
|
||||
extern PFNGLGETTEXPARAMETERIVPROC glGetTexParameteriv;
|
||||
extern PFNGLGETTEXLEVELPARAMETERFVPROC glGetTexLevelParameterfv;
|
||||
extern PFNGLGETTEXLEVELPARAMETERIVPROC glGetTexLevelParameteriv;
|
||||
extern PFNGLTEXIMAGE1DPROC glTexImage1D;
|
||||
extern PFNGLTEXIMAGE2DPROC glTexImage2D;
|
||||
extern PFNGLGETTEXIMAGEPROC glGetTexImage;
|
||||
extern PFNGLGENTEXTURESPROC glGenTextures;
|
||||
extern PFNGLDELETETEXTURESPROC glDeleteTextures;
|
||||
extern PFNGLBINDTEXTUREPROC glBindTexture;
|
||||
extern PFNGLPRIORITIZETEXTURESPROC glPrioritizeTextures;
|
||||
extern PFNGLARETEXTURESRESIDENTPROC glAreTexturesResident;
|
||||
extern PFNGLISTEXTUREPROC glIsTexture;
|
||||
extern PFNGLTEXSUBIMAGE1DPROC glTexSubImage1D;
|
||||
extern PFNGLTEXSUBIMAGE2DPROC glTexSubImage2D;
|
||||
extern PFNGLCOPYTEXIMAGE1DPROC glCopyTexImage1D;
|
||||
extern PFNGLCOPYTEXIMAGE2DPROC glCopyTexImage2D;
|
||||
extern PFNGLCOPYTEXSUBIMAGE1DPROC glCopyTexSubImage1D;
|
||||
extern PFNGLCOPYTEXSUBIMAGE2DPROC glCopyTexSubImage2D;
|
||||
extern PFNGLMAP1DPROC glMap1d;
|
||||
extern PFNGLMAP1FPROC glMap1f;
|
||||
extern PFNGLMAP2DPROC glMap2d;
|
||||
extern PFNGLMAP2FPROC glMap2f;
|
||||
extern PFNGLGETMAPDVPROC glGetMapdv;
|
||||
extern PFNGLGETMAPFVPROC glGetMapfv;
|
||||
extern PFNGLGETMAPIVPROC glGetMapiv;
|
||||
extern PFNGLEVALCOORD1DPROC glEvalCoord1d;
|
||||
extern PFNGLEVALCOORD1FPROC glEvalCoord1f;
|
||||
extern PFNGLEVALCOORD1DVPROC glEvalCoord1dv;
|
||||
extern PFNGLEVALCOORD1FVPROC glEvalCoord1fv;
|
||||
extern PFNGLEVALCOORD2DPROC glEvalCoord2d;
|
||||
extern PFNGLEVALCOORD2FPROC glEvalCoord2f;
|
||||
extern PFNGLEVALCOORD2DVPROC glEvalCoord2dv;
|
||||
extern PFNGLEVALCOORD2FVPROC glEvalCoord2fv;
|
||||
extern PFNGLMAPGRID1DPROC glMapGrid1d;
|
||||
extern PFNGLMAPGRID1FPROC glMapGrid1f;
|
||||
extern PFNGLMAPGRID2DPROC glMapGrid2d;
|
||||
extern PFNGLMAPGRID2FPROC glMapGrid2f;
|
||||
extern PFNGLEVALPOINT1PROC glEvalPoint1;
|
||||
extern PFNGLEVALPOINT2PROC glEvalPoint2;
|
||||
extern PFNGLEVALMESH1PROC glEvalMesh1;
|
||||
extern PFNGLEVALMESH2PROC glEvalMesh2;
|
||||
extern PFNGLFOGFPROC glFogf;
|
||||
extern PFNGLFOGIPROC glFogi;
|
||||
extern PFNGLFOGFVPROC glFogfv;
|
||||
extern PFNGLFOGIVPROC glFogiv;
|
||||
extern PFNGLFEEDBACKBUFFERPROC glFeedbackBuffer;
|
||||
extern PFNGLPASSTHROUGHPROC glPassThrough;
|
||||
extern PFNGLSELECTBUFFERPROC glSelectBuffer;
|
||||
extern PFNGLINITNAMESPROC glInitNames;
|
||||
extern PFNGLLOADNAMEPROC glLoadName;
|
||||
extern PFNGLPUSHNAMEPROC glPushName;
|
||||
extern PFNGLPOPNAMEPROC glPopName;
|
||||
|
11
Source/Core/Common/GL/GLExtensions/gl_1_2.h
Normal file
11
Source/Core/Common/GL/GLExtensions/gl_1_2.h
Normal file
@ -0,0 +1,11 @@
|
||||
// Copyright 2013 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
extern PFNGLCOPYTEXSUBIMAGE3DPROC glCopyTexSubImage3D;
|
||||
extern PFNGLDRAWRANGEELEMENTSPROC glDrawRangeElements;
|
||||
extern PFNGLTEXIMAGE3DPROC glTexImage3D;
|
||||
extern PFNGLTEXSUBIMAGE3DPROC glTexSubImage3D;
|
||||
|
53
Source/Core/Common/GL/GLExtensions/gl_1_3.h
Normal file
53
Source/Core/Common/GL/GLExtensions/gl_1_3.h
Normal file
@ -0,0 +1,53 @@
|
||||
// Copyright 2013 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
extern PFNGLACTIVETEXTUREARBPROC glActiveTexture;
|
||||
extern PFNGLCLIENTACTIVETEXTUREARBPROC glClientActiveTexture;
|
||||
extern PFNGLCOMPRESSEDTEXIMAGE1DPROC glCompressedTexImage1D;
|
||||
extern PFNGLCOMPRESSEDTEXIMAGE2DPROC glCompressedTexImage2D;
|
||||
extern PFNGLCOMPRESSEDTEXIMAGE3DPROC glCompressedTexImage3D;
|
||||
extern PFNGLCOMPRESSEDTEXSUBIMAGE1DPROC glCompressedTexSubImage1D;
|
||||
extern PFNGLCOMPRESSEDTEXSUBIMAGE2DPROC glCompressedTexSubImage2D;
|
||||
extern PFNGLCOMPRESSEDTEXSUBIMAGE3DPROC glCompressedTexSubImage3D;
|
||||
extern PFNGLGETCOMPRESSEDTEXIMAGEPROC glGetCompressedTexImage;
|
||||
extern PFNGLLOADTRANSPOSEMATRIXDARBPROC glLoadTransposeMatrixd;
|
||||
extern PFNGLLOADTRANSPOSEMATRIXFARBPROC glLoadTransposeMatrixf;
|
||||
extern PFNGLMULTTRANSPOSEMATRIXDARBPROC glMultTransposeMatrixd;
|
||||
extern PFNGLMULTTRANSPOSEMATRIXFARBPROC glMultTransposeMatrixf;
|
||||
extern PFNGLMULTITEXCOORD1DARBPROC glMultiTexCoord1d;
|
||||
extern PFNGLMULTITEXCOORD1DVARBPROC glMultiTexCoord1dv;
|
||||
extern PFNGLMULTITEXCOORD1FARBPROC glMultiTexCoord1f;
|
||||
extern PFNGLMULTITEXCOORD1FVARBPROC glMultiTexCoord1fv;
|
||||
extern PFNGLMULTITEXCOORD1IARBPROC glMultiTexCoord1i;
|
||||
extern PFNGLMULTITEXCOORD1IVARBPROC glMultiTexCoord1iv;
|
||||
extern PFNGLMULTITEXCOORD1SARBPROC glMultiTexCoord1s;
|
||||
extern PFNGLMULTITEXCOORD1SVARBPROC glMultiTexCoord1sv;
|
||||
extern PFNGLMULTITEXCOORD2DARBPROC glMultiTexCoord2d;
|
||||
extern PFNGLMULTITEXCOORD2DVARBPROC glMultiTexCoord2dv;
|
||||
extern PFNGLMULTITEXCOORD2FARBPROC glMultiTexCoord2f;
|
||||
extern PFNGLMULTITEXCOORD2FVARBPROC glMultiTexCoord2fv;
|
||||
extern PFNGLMULTITEXCOORD2IARBPROC glMultiTexCoord2i;
|
||||
extern PFNGLMULTITEXCOORD2IVARBPROC glMultiTexCoord2iv;
|
||||
extern PFNGLMULTITEXCOORD2SARBPROC glMultiTexCoord2s;
|
||||
extern PFNGLMULTITEXCOORD2SVARBPROC glMultiTexCoord2sv;
|
||||
extern PFNGLMULTITEXCOORD3DARBPROC glMultiTexCoord3d;
|
||||
extern PFNGLMULTITEXCOORD3DVARBPROC glMultiTexCoord3dv;
|
||||
extern PFNGLMULTITEXCOORD3FARBPROC glMultiTexCoord3f;
|
||||
extern PFNGLMULTITEXCOORD3FVARBPROC glMultiTexCoord3fv;
|
||||
extern PFNGLMULTITEXCOORD3IARBPROC glMultiTexCoord3i;
|
||||
extern PFNGLMULTITEXCOORD3IVARBPROC glMultiTexCoord3iv;
|
||||
extern PFNGLMULTITEXCOORD3SARBPROC glMultiTexCoord3s;
|
||||
extern PFNGLMULTITEXCOORD3SVARBPROC glMultiTexCoord3sv;
|
||||
extern PFNGLMULTITEXCOORD4DARBPROC glMultiTexCoord4d;
|
||||
extern PFNGLMULTITEXCOORD4DVARBPROC glMultiTexCoord4dv;
|
||||
extern PFNGLMULTITEXCOORD4FARBPROC glMultiTexCoord4f;
|
||||
extern PFNGLMULTITEXCOORD4FVARBPROC glMultiTexCoord4fv;
|
||||
extern PFNGLMULTITEXCOORD4IARBPROC glMultiTexCoord4i;
|
||||
extern PFNGLMULTITEXCOORD4IVARBPROC glMultiTexCoord4iv;
|
||||
extern PFNGLMULTITEXCOORD4SARBPROC glMultiTexCoord4s;
|
||||
extern PFNGLMULTITEXCOORD4SVARBPROC glMultiTexCoord4sv;
|
||||
extern PFNGLSAMPLECOVERAGEARBPROC glSampleCoverage;
|
||||
|
55
Source/Core/Common/GL/GLExtensions/gl_1_4.h
Normal file
55
Source/Core/Common/GL/GLExtensions/gl_1_4.h
Normal file
@ -0,0 +1,55 @@
|
||||
// Copyright 2013 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
// These two are provided by ARB_imaging as well
|
||||
extern PFNGLBLENDCOLORPROC glBlendColor;
|
||||
extern PFNGLBLENDEQUATIONPROC glBlendEquation;
|
||||
extern PFNGLBLENDFUNCSEPARATEPROC glBlendFuncSeparate;
|
||||
extern PFNGLFOGCOORDPOINTERPROC glFogCoordPointer;
|
||||
extern PFNGLFOGCOORDDPROC glFogCoordd;
|
||||
extern PFNGLFOGCOORDDVPROC glFogCoorddv;
|
||||
extern PFNGLFOGCOORDFPROC glFogCoordf;
|
||||
extern PFNGLFOGCOORDFVPROC glFogCoordfv;
|
||||
extern PFNGLMULTIDRAWARRAYSPROC glMultiDrawArrays;
|
||||
extern PFNGLMULTIDRAWELEMENTSPROC glMultiDrawElements;
|
||||
extern PFNGLPOINTPARAMETERFPROC glPointParameterf;
|
||||
extern PFNGLPOINTPARAMETERFVPROC glPointParameterfv;
|
||||
extern PFNGLPOINTPARAMETERIPROC glPointParameteri;
|
||||
extern PFNGLPOINTPARAMETERIVPROC glPointParameteriv;
|
||||
extern PFNGLSECONDARYCOLOR3BPROC glSecondaryColor3b;
|
||||
extern PFNGLSECONDARYCOLOR3BVPROC glSecondaryColor3bv;
|
||||
extern PFNGLSECONDARYCOLOR3DPROC glSecondaryColor3d;
|
||||
extern PFNGLSECONDARYCOLOR3DVPROC glSecondaryColor3dv;
|
||||
extern PFNGLSECONDARYCOLOR3FPROC glSecondaryColor3f;
|
||||
extern PFNGLSECONDARYCOLOR3FVPROC glSecondaryColor3fv;
|
||||
extern PFNGLSECONDARYCOLOR3IPROC glSecondaryColor3i;
|
||||
extern PFNGLSECONDARYCOLOR3IVPROC glSecondaryColor3iv;
|
||||
extern PFNGLSECONDARYCOLOR3SPROC glSecondaryColor3s;
|
||||
extern PFNGLSECONDARYCOLOR3SVPROC glSecondaryColor3sv;
|
||||
extern PFNGLSECONDARYCOLOR3UBPROC glSecondaryColor3ub;
|
||||
extern PFNGLSECONDARYCOLOR3UBVPROC glSecondaryColor3ubv;
|
||||
extern PFNGLSECONDARYCOLOR3UIPROC glSecondaryColor3ui;
|
||||
extern PFNGLSECONDARYCOLOR3UIVPROC glSecondaryColor3uiv;
|
||||
extern PFNGLSECONDARYCOLOR3USPROC glSecondaryColor3us;
|
||||
extern PFNGLSECONDARYCOLOR3USVPROC glSecondaryColor3usv;
|
||||
extern PFNGLSECONDARYCOLORPOINTERPROC glSecondaryColorPointer;
|
||||
extern PFNGLWINDOWPOS2DPROC glWindowPos2d;
|
||||
extern PFNGLWINDOWPOS2DVPROC glWindowPos2dv;
|
||||
extern PFNGLWINDOWPOS2FPROC glWindowPos2f;
|
||||
extern PFNGLWINDOWPOS2FVPROC glWindowPos2fv;
|
||||
extern PFNGLWINDOWPOS2IPROC glWindowPos2i;
|
||||
extern PFNGLWINDOWPOS2IVPROC glWindowPos2iv;
|
||||
extern PFNGLWINDOWPOS2SPROC glWindowPos2s;
|
||||
extern PFNGLWINDOWPOS2SVPROC glWindowPos2sv;
|
||||
extern PFNGLWINDOWPOS3DPROC glWindowPos3d;
|
||||
extern PFNGLWINDOWPOS3DVPROC glWindowPos3dv;
|
||||
extern PFNGLWINDOWPOS3FPROC glWindowPos3f;
|
||||
extern PFNGLWINDOWPOS3FVPROC glWindowPos3fv;
|
||||
extern PFNGLWINDOWPOS3IPROC glWindowPos3i;
|
||||
extern PFNGLWINDOWPOS3IVPROC glWindowPos3iv;
|
||||
extern PFNGLWINDOWPOS3SPROC glWindowPos3s;
|
||||
extern PFNGLWINDOWPOS3SVPROC glWindowPos3sv;
|
||||
|
26
Source/Core/Common/GL/GLExtensions/gl_1_5.h
Normal file
26
Source/Core/Common/GL/GLExtensions/gl_1_5.h
Normal file
@ -0,0 +1,26 @@
|
||||
// Copyright 2013 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
extern PFNGLBEGINQUERYPROC glBeginQuery;
|
||||
extern PFNGLBINDBUFFERPROC glBindBuffer;
|
||||
extern PFNGLBUFFERDATAPROC glBufferData;
|
||||
extern PFNGLBUFFERSUBDATAPROC glBufferSubData;
|
||||
extern PFNGLDELETEBUFFERSPROC glDeleteBuffers;
|
||||
extern PFNGLDELETEQUERIESPROC glDeleteQueries;
|
||||
extern PFNGLENDQUERYPROC glEndQuery;
|
||||
extern PFNGLGENBUFFERSPROC glGenBuffers;
|
||||
extern PFNGLGENQUERIESPROC glGenQueries;
|
||||
extern PFNGLGETBUFFERPARAMETERIVPROC glGetBufferParameteriv;
|
||||
extern PFNGLGETBUFFERPOINTERVPROC glGetBufferPointerv;
|
||||
extern PFNGLGETBUFFERSUBDATAPROC glGetBufferSubData;
|
||||
extern PFNGLGETQUERYOBJECTIVPROC glGetQueryObjectiv;
|
||||
extern PFNGLGETQUERYOBJECTUIVPROC glGetQueryObjectuiv;
|
||||
extern PFNGLGETQUERYIVPROC glGetQueryiv;
|
||||
extern PFNGLISBUFFERPROC glIsBuffer;
|
||||
extern PFNGLISQUERYPROC glIsQuery;
|
||||
extern PFNGLMAPBUFFERPROC glMapBuffer;
|
||||
extern PFNGLUNMAPBUFFERPROC glUnmapBuffer;
|
||||
|
100
Source/Core/Common/GL/GLExtensions/gl_2_0.h
Normal file
100
Source/Core/Common/GL/GLExtensions/gl_2_0.h
Normal file
@ -0,0 +1,100 @@
|
||||
// Copyright 2013 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
extern PFNGLATTACHSHADERPROC glAttachShader;
|
||||
extern PFNGLBINDATTRIBLOCATIONPROC glBindAttribLocation;
|
||||
extern PFNGLBLENDEQUATIONSEPARATEPROC glBlendEquationSeparate;
|
||||
extern PFNGLCOMPILESHADERPROC glCompileShader;
|
||||
extern PFNGLCREATEPROGRAMPROC glCreateProgram;
|
||||
extern PFNGLCREATESHADERPROC glCreateShader;
|
||||
extern PFNGLDELETEPROGRAMPROC glDeleteProgram;
|
||||
extern PFNGLDELETESHADERPROC glDeleteShader;
|
||||
extern PFNGLDETACHSHADERPROC glDetachShader;
|
||||
extern PFNGLDISABLEVERTEXATTRIBARRAYPROC glDisableVertexAttribArray;
|
||||
extern PFNGLDRAWBUFFERSPROC glDrawBuffers;
|
||||
extern PFNGLENABLEVERTEXATTRIBARRAYPROC glEnableVertexAttribArray;
|
||||
extern PFNGLGETACTIVEATTRIBPROC glGetActiveAttrib;
|
||||
extern PFNGLGETACTIVEUNIFORMPROC glGetActiveUniform;
|
||||
extern PFNGLGETATTACHEDSHADERSPROC glGetAttachedShaders;
|
||||
extern PFNGLGETATTRIBLOCATIONPROC glGetAttribLocation;
|
||||
extern PFNGLGETPROGRAMINFOLOGPROC glGetProgramInfoLog;
|
||||
extern PFNGLGETPROGRAMIVPROC glGetProgramiv;
|
||||
extern PFNGLGETSHADERINFOLOGPROC glGetShaderInfoLog;
|
||||
extern PFNGLGETSHADERSOURCEPROC glGetShaderSource;
|
||||
extern PFNGLGETSHADERIVPROC glGetShaderiv;
|
||||
extern PFNGLGETUNIFORMLOCATIONPROC glGetUniformLocation;
|
||||
extern PFNGLGETUNIFORMFVPROC glGetUniformfv;
|
||||
extern PFNGLGETUNIFORMIVPROC glGetUniformiv;
|
||||
extern PFNGLGETVERTEXATTRIBPOINTERVPROC glGetVertexAttribPointerv;
|
||||
extern PFNGLGETVERTEXATTRIBDVPROC glGetVertexAttribdv;
|
||||
extern PFNGLGETVERTEXATTRIBFVPROC glGetVertexAttribfv;
|
||||
extern PFNGLGETVERTEXATTRIBIVPROC glGetVertexAttribiv;
|
||||
extern PFNGLISPROGRAMPROC glIsProgram;
|
||||
extern PFNGLISSHADERPROC glIsShader;
|
||||
extern PFNGLLINKPROGRAMPROC glLinkProgram;
|
||||
extern PFNGLSHADERSOURCEPROC glShaderSource;
|
||||
extern PFNGLSTENCILFUNCSEPARATEPROC glStencilFuncSeparate;
|
||||
extern PFNGLSTENCILMASKSEPARATEPROC glStencilMaskSeparate;
|
||||
extern PFNGLSTENCILOPSEPARATEPROC glStencilOpSeparate;
|
||||
extern PFNGLUNIFORM1FPROC glUniform1f;
|
||||
extern PFNGLUNIFORM1FVPROC glUniform1fv;
|
||||
extern PFNGLUNIFORM1IPROC glUniform1i;
|
||||
extern PFNGLUNIFORM1IVPROC glUniform1iv;
|
||||
extern PFNGLUNIFORM2FPROC glUniform2f;
|
||||
extern PFNGLUNIFORM2FVPROC glUniform2fv;
|
||||
extern PFNGLUNIFORM2IPROC glUniform2i;
|
||||
extern PFNGLUNIFORM2IVPROC glUniform2iv;
|
||||
extern PFNGLUNIFORM3FPROC glUniform3f;
|
||||
extern PFNGLUNIFORM3FVPROC glUniform3fv;
|
||||
extern PFNGLUNIFORM3IPROC glUniform3i;
|
||||
extern PFNGLUNIFORM3IVPROC glUniform3iv;
|
||||
extern PFNGLUNIFORM4FPROC glUniform4f;
|
||||
extern PFNGLUNIFORM4FVPROC glUniform4fv;
|
||||
extern PFNGLUNIFORM4IPROC glUniform4i;
|
||||
extern PFNGLUNIFORM4IVPROC glUniform4iv;
|
||||
extern PFNGLUNIFORMMATRIX2FVPROC glUniformMatrix2fv;
|
||||
extern PFNGLUNIFORMMATRIX3FVPROC glUniformMatrix3fv;
|
||||
extern PFNGLUNIFORMMATRIX4FVPROC glUniformMatrix4fv;
|
||||
extern PFNGLUSEPROGRAMPROC glUseProgram;
|
||||
extern PFNGLVALIDATEPROGRAMPROC glValidateProgram;
|
||||
extern PFNGLVERTEXATTRIB1DPROC glVertexAttrib1d;
|
||||
extern PFNGLVERTEXATTRIB1DVPROC glVertexAttrib1dv;
|
||||
extern PFNGLVERTEXATTRIB1FPROC glVertexAttrib1f;
|
||||
extern PFNGLVERTEXATTRIB1FVPROC glVertexAttrib1fv;
|
||||
extern PFNGLVERTEXATTRIB1SPROC glVertexAttrib1s;
|
||||
extern PFNGLVERTEXATTRIB1SVPROC glVertexAttrib1sv;
|
||||
extern PFNGLVERTEXATTRIB2DPROC glVertexAttrib2d;
|
||||
extern PFNGLVERTEXATTRIB2DVPROC glVertexAttrib2dv;
|
||||
extern PFNGLVERTEXATTRIB2FPROC glVertexAttrib2f;
|
||||
extern PFNGLVERTEXATTRIB2FVPROC glVertexAttrib2fv;
|
||||
extern PFNGLVERTEXATTRIB2SPROC glVertexAttrib2s;
|
||||
extern PFNGLVERTEXATTRIB2SVPROC glVertexAttrib2sv;
|
||||
extern PFNGLVERTEXATTRIB3DPROC glVertexAttrib3d;
|
||||
extern PFNGLVERTEXATTRIB3DVPROC glVertexAttrib3dv;
|
||||
extern PFNGLVERTEXATTRIB3FPROC glVertexAttrib3f;
|
||||
extern PFNGLVERTEXATTRIB3FVPROC glVertexAttrib3fv;
|
||||
extern PFNGLVERTEXATTRIB3SPROC glVertexAttrib3s;
|
||||
extern PFNGLVERTEXATTRIB3SVPROC glVertexAttrib3sv;
|
||||
extern PFNGLVERTEXATTRIB4NBVPROC glVertexAttrib4Nbv;
|
||||
extern PFNGLVERTEXATTRIB4NIVPROC glVertexAttrib4Niv;
|
||||
extern PFNGLVERTEXATTRIB4NSVPROC glVertexAttrib4Nsv;
|
||||
extern PFNGLVERTEXATTRIB4NUBPROC glVertexAttrib4Nub;
|
||||
extern PFNGLVERTEXATTRIB4NUBVPROC glVertexAttrib4Nubv;
|
||||
extern PFNGLVERTEXATTRIB4NUIVPROC glVertexAttrib4Nuiv;
|
||||
extern PFNGLVERTEXATTRIB4NUSVPROC glVertexAttrib4Nusv;
|
||||
extern PFNGLVERTEXATTRIB4BVPROC glVertexAttrib4bv;
|
||||
extern PFNGLVERTEXATTRIB4DPROC glVertexAttrib4d;
|
||||
extern PFNGLVERTEXATTRIB4DVPROC glVertexAttrib4dv;
|
||||
extern PFNGLVERTEXATTRIB4FPROC glVertexAttrib4f;
|
||||
extern PFNGLVERTEXATTRIB4FVPROC glVertexAttrib4fv;
|
||||
extern PFNGLVERTEXATTRIB4IVPROC glVertexAttrib4iv;
|
||||
extern PFNGLVERTEXATTRIB4SPROC glVertexAttrib4s;
|
||||
extern PFNGLVERTEXATTRIB4SVPROC glVertexAttrib4sv;
|
||||
extern PFNGLVERTEXATTRIB4UBVPROC glVertexAttrib4ubv;
|
||||
extern PFNGLVERTEXATTRIB4UIVPROC glVertexAttrib4uiv;
|
||||
extern PFNGLVERTEXATTRIB4USVPROC glVertexAttrib4usv;
|
||||
extern PFNGLVERTEXATTRIBPOINTERPROC glVertexAttribPointer;
|
||||
|
62
Source/Core/Common/GL/GLExtensions/gl_3_0.h
Normal file
62
Source/Core/Common/GL/GLExtensions/gl_3_0.h
Normal file
@ -0,0 +1,62 @@
|
||||
// Copyright 2013 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
extern PFNGLBEGINCONDITIONALRENDERPROC glBeginConditionalRender;
|
||||
extern PFNGLBEGINTRANSFORMFEEDBACKPROC glBeginTransformFeedback;
|
||||
extern PFNGLBINDFRAGDATALOCATIONPROC glBindFragDataLocation;
|
||||
extern PFNGLCLAMPCOLORPROC glClampColor;
|
||||
extern PFNGLCLEARBUFFERFIPROC glClearBufferfi;
|
||||
extern PFNGLCLEARBUFFERFVPROC glClearBufferfv;
|
||||
extern PFNGLCLEARBUFFERIVPROC glClearBufferiv;
|
||||
extern PFNGLCLEARBUFFERUIVPROC glClearBufferuiv;
|
||||
extern PFNGLCOLORMASKIPROC glColorMaski;
|
||||
extern PFNGLDISABLEIPROC glDisablei;
|
||||
extern PFNGLENABLEIPROC glEnablei;
|
||||
extern PFNGLENDCONDITIONALRENDERPROC glEndConditionalRender;
|
||||
extern PFNGLENDTRANSFORMFEEDBACKPROC glEndTransformFeedback;
|
||||
extern PFNGLGETBOOLEANI_VPROC glGetBooleani_v;
|
||||
extern PFNGLGETFRAGDATALOCATIONPROC glGetFragDataLocation;
|
||||
extern PFNGLGETSTRINGIPROC glGetStringi;
|
||||
extern PFNGLGETTEXPARAMETERIIVPROC glGetTexParameterIiv;
|
||||
extern PFNGLGETTEXPARAMETERIUIVPROC glGetTexParameterIuiv;
|
||||
extern PFNGLGETTRANSFORMFEEDBACKVARYINGPROC glGetTransformFeedbackVarying;
|
||||
extern PFNGLGETUNIFORMUIVPROC glGetUniformuiv;
|
||||
extern PFNGLGETVERTEXATTRIBIIVPROC glGetVertexAttribIiv;
|
||||
extern PFNGLGETVERTEXATTRIBIUIVPROC glGetVertexAttribIuiv;
|
||||
extern PFNGLISENABLEDIPROC glIsEnabledi;
|
||||
extern PFNGLTEXPARAMETERIIVPROC glTexParameterIiv;
|
||||
extern PFNGLTEXPARAMETERIUIVPROC glTexParameterIuiv;
|
||||
extern PFNGLTRANSFORMFEEDBACKVARYINGSPROC glTransformFeedbackVaryings;
|
||||
extern PFNGLUNIFORM1UIPROC glUniform1ui;
|
||||
extern PFNGLUNIFORM1UIVPROC glUniform1uiv;
|
||||
extern PFNGLUNIFORM2UIPROC glUniform2ui;
|
||||
extern PFNGLUNIFORM2UIVPROC glUniform2uiv;
|
||||
extern PFNGLUNIFORM3UIPROC glUniform3ui;
|
||||
extern PFNGLUNIFORM3UIVPROC glUniform3uiv;
|
||||
extern PFNGLUNIFORM4UIPROC glUniform4ui;
|
||||
extern PFNGLUNIFORM4UIVPROC glUniform4uiv;
|
||||
extern PFNGLVERTEXATTRIBI1IPROC glVertexAttribI1i;
|
||||
extern PFNGLVERTEXATTRIBI1IVPROC glVertexAttribI1iv;
|
||||
extern PFNGLVERTEXATTRIBI1UIPROC glVertexAttribI1ui;
|
||||
extern PFNGLVERTEXATTRIBI1UIVPROC glVertexAttribI1uiv;
|
||||
extern PFNGLVERTEXATTRIBI2IPROC glVertexAttribI2i;
|
||||
extern PFNGLVERTEXATTRIBI2IVPROC glVertexAttribI2iv;
|
||||
extern PFNGLVERTEXATTRIBI2UIPROC glVertexAttribI2ui;
|
||||
extern PFNGLVERTEXATTRIBI2UIVPROC glVertexAttribI2uiv;
|
||||
extern PFNGLVERTEXATTRIBI3IPROC glVertexAttribI3i;
|
||||
extern PFNGLVERTEXATTRIBI3IVPROC glVertexAttribI3iv;
|
||||
extern PFNGLVERTEXATTRIBI3UIPROC glVertexAttribI3ui;
|
||||
extern PFNGLVERTEXATTRIBI3UIVPROC glVertexAttribI3uiv;
|
||||
extern PFNGLVERTEXATTRIBI4BVPROC glVertexAttribI4bv;
|
||||
extern PFNGLVERTEXATTRIBI4IPROC glVertexAttribI4i;
|
||||
extern PFNGLVERTEXATTRIBI4IVPROC glVertexAttribI4iv;
|
||||
extern PFNGLVERTEXATTRIBI4SVPROC glVertexAttribI4sv;
|
||||
extern PFNGLVERTEXATTRIBI4UBVPROC glVertexAttribI4ubv;
|
||||
extern PFNGLVERTEXATTRIBI4UIPROC glVertexAttribI4ui;
|
||||
extern PFNGLVERTEXATTRIBI4UIVPROC glVertexAttribI4uiv;
|
||||
extern PFNGLVERTEXATTRIBI4USVPROC glVertexAttribI4usv;
|
||||
extern PFNGLVERTEXATTRIBIPOINTERPROC glVertexAttribIPointer;
|
||||
|
11
Source/Core/Common/GL/GLExtensions/gl_3_1.h
Normal file
11
Source/Core/Common/GL/GLExtensions/gl_3_1.h
Normal file
@ -0,0 +1,11 @@
|
||||
// Copyright 2013 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
extern PFNGLDRAWARRAYSINSTANCEDPROC glDrawArraysInstanced;
|
||||
extern PFNGLDRAWELEMENTSINSTANCEDPROC glDrawElementsInstanced;
|
||||
extern PFNGLPRIMITIVERESTARTINDEXPROC glPrimitiveRestartIndex;
|
||||
extern PFNGLTEXBUFFERPROC glTexBuffer;
|
||||
|
10
Source/Core/Common/GL/GLExtensions/gl_3_2.h
Normal file
10
Source/Core/Common/GL/GLExtensions/gl_3_2.h
Normal file
@ -0,0 +1,10 @@
|
||||
// Copyright 2013 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLExtensions/gl_common.h"
|
||||
|
||||
extern PFNGLFRAMEBUFFERTEXTUREPROC glFramebufferTexture;
|
||||
extern PFNGLGETBUFFERPARAMETERI64VPROC glGetBufferParameteri64v;
|
||||
extern PFNGLGETINTEGER64I_VPROC glGetInteger64i_v;
|
||||
|
7
Source/Core/Common/GL/GLExtensions/gl_common.h
Normal file
7
Source/Core/Common/GL/GLExtensions/gl_common.h
Normal file
@ -0,0 +1,7 @@
|
||||
// Copyright 2008 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include <GL/gl.h>
|
||||
#include <GL/glext.h>
|
||||
|
109
Source/Core/Common/GL/GLInterface/AGL.cpp
Normal file
109
Source/Core/Common/GL/GLInterface/AGL.cpp
Normal file
@ -0,0 +1,109 @@
|
||||
// Copyright 2012 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLInterface/AGL.h"
|
||||
|
||||
#include "VideoCommon/RenderBase.h"
|
||||
#include "VideoCommon/VertexShaderManager.h"
|
||||
#include "VideoCommon/VideoConfig.h"
|
||||
|
||||
void cInterfaceAGL::Swap()
|
||||
{
|
||||
[cocoaCtx flushBuffer];
|
||||
}
|
||||
|
||||
// Create rendering window.
|
||||
// Call browser: Core.cpp:EmuThread() > main.cpp:Video_Initialize()
|
||||
bool cInterfaceAGL::Create(void *window_handle, bool core)
|
||||
{
|
||||
cocoaWin = reinterpret_cast<NSView*>(window_handle);
|
||||
NSSize size = [cocoaWin frame].size;
|
||||
|
||||
// Enable high-resolution display support.
|
||||
[cocoaWin setWantsBestResolutionOpenGLSurface:YES];
|
||||
|
||||
NSWindow *window = [cocoaWin window];
|
||||
|
||||
float scale = [window backingScaleFactor];
|
||||
size.width *= scale;
|
||||
size.height *= scale;
|
||||
|
||||
// Control window size and picture scaling
|
||||
s_backbuffer_width = size.width;
|
||||
s_backbuffer_height = size.height;
|
||||
|
||||
NSOpenGLPixelFormatAttribute attr[] = { NSOpenGLPFADoubleBuffer, NSOpenGLPFAOpenGLProfile, core ? NSOpenGLProfileVersion3_2Core : NSOpenGLProfileVersionLegacy, NSOpenGLPFAAccelerated, 0 };
|
||||
NSOpenGLPixelFormat *fmt = [[NSOpenGLPixelFormat alloc]
|
||||
initWithAttributes: attr];
|
||||
if (fmt == nil)
|
||||
{
|
||||
ERROR_LOG(VIDEO, "failed to create pixel format");
|
||||
return false;
|
||||
}
|
||||
|
||||
cocoaCtx = [[NSOpenGLContext alloc] initWithFormat: fmt shareContext: nil];
|
||||
[fmt release];
|
||||
if (cocoaCtx == nil)
|
||||
{
|
||||
ERROR_LOG(VIDEO, "failed to create context");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (cocoaWin == nil)
|
||||
{
|
||||
ERROR_LOG(VIDEO, "failed to create window");
|
||||
return false;
|
||||
}
|
||||
|
||||
[window makeFirstResponder:cocoaWin];
|
||||
[cocoaCtx setView: cocoaWin];
|
||||
[window makeKeyAndOrderFront: nil];
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool cInterfaceAGL::MakeCurrent()
|
||||
{
|
||||
[cocoaCtx makeCurrentContext];
|
||||
return true;
|
||||
}
|
||||
|
||||
bool cInterfaceAGL::ClearCurrent()
|
||||
{
|
||||
[NSOpenGLContext clearCurrentContext];
|
||||
return true;
|
||||
}
|
||||
|
||||
// Close backend
|
||||
void cInterfaceAGL::Shutdown()
|
||||
{
|
||||
[cocoaCtx clearDrawable];
|
||||
[cocoaCtx release];
|
||||
cocoaCtx = nil;
|
||||
}
|
||||
|
||||
void cInterfaceAGL::Update()
|
||||
{
|
||||
NSWindow *window = [cocoaWin window];
|
||||
NSSize size = [cocoaWin frame].size;
|
||||
|
||||
float scale = [window backingScaleFactor];
|
||||
size.width *= scale;
|
||||
size.height *= scale;
|
||||
|
||||
if (s_backbuffer_width == size.width &&
|
||||
s_backbuffer_height == size.height)
|
||||
return;
|
||||
|
||||
s_backbuffer_width = size.width;
|
||||
s_backbuffer_height = size.height;
|
||||
|
||||
[cocoaCtx update];
|
||||
}
|
||||
|
||||
void cInterfaceAGL::SwapInterval(int interval)
|
||||
{
|
||||
[cocoaCtx setValues:(GLint *)&interval forParameter:NSOpenGLCPSwapInterval];
|
||||
}
|
||||
|
27
Source/Core/Common/GL/GLInterface/AGL.h
Normal file
27
Source/Core/Common/GL/GLInterface/AGL.h
Normal file
@ -0,0 +1,27 @@
|
||||
// Copyright 2008 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#pragma once
|
||||
|
||||
#ifdef __APPLE__
|
||||
#import <AppKit/AppKit.h>
|
||||
#endif
|
||||
|
||||
#include "Common/GL/GLInterfaceBase.h"
|
||||
|
||||
class cInterfaceAGL : public cInterfaceBase
|
||||
{
|
||||
private:
|
||||
NSView *cocoaWin;
|
||||
NSOpenGLContext *cocoaCtx;
|
||||
public:
|
||||
void Swap();
|
||||
bool Create(void *window_handle, bool core);
|
||||
bool MakeCurrent();
|
||||
bool ClearCurrent();
|
||||
void Shutdown();
|
||||
void Update();
|
||||
void SwapInterval(int interval);
|
||||
|
||||
};
|
227
Source/Core/Common/GL/GLInterface/EGL.cpp
Normal file
227
Source/Core/Common/GL/GLInterface/EGL.cpp
Normal file
@ -0,0 +1,227 @@
|
||||
// Copyright 2012 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLInterfaceBase.h"
|
||||
#include "Common/GL/GLInterface/EGL.h"
|
||||
#include "VideoCommon/DriverDetails.h"
|
||||
#include "VideoCommon/RenderBase.h"
|
||||
|
||||
// Show the current FPS
|
||||
void cInterfaceEGL::Swap()
|
||||
{
|
||||
eglSwapBuffers(egl_dpy, egl_surf);
|
||||
}
|
||||
void cInterfaceEGL::SwapInterval(int Interval)
|
||||
{
|
||||
if (!DriverDetails::HasBug(DriverDetails::BUG_BROKENVSYNC))
|
||||
eglSwapInterval(egl_dpy, Interval);
|
||||
}
|
||||
|
||||
void* cInterfaceEGL::GetFuncAddress(const std::string& name)
|
||||
{
|
||||
return (void*)eglGetProcAddress(name.c_str());
|
||||
}
|
||||
|
||||
void cInterfaceEGL::DetectMode()
|
||||
{
|
||||
if (s_opengl_mode != MODE_DETECT)
|
||||
return;
|
||||
|
||||
EGLint num_configs;
|
||||
bool supportsGL = false, supportsGLES2 = false, supportsGLES3 = false;
|
||||
std::array<int, 3> renderable_types = {
|
||||
EGL_OPENGL_BIT,
|
||||
(1 << 6), /* EGL_OPENGL_ES3_BIT_KHR */
|
||||
EGL_OPENGL_ES2_BIT,
|
||||
};
|
||||
|
||||
for (auto renderable_type : renderable_types)
|
||||
{
|
||||
// attributes for a visual in RGBA format with at least
|
||||
// 8 bits per color
|
||||
int attribs[] = {
|
||||
EGL_RED_SIZE, 8,
|
||||
EGL_GREEN_SIZE, 8,
|
||||
EGL_BLUE_SIZE, 8,
|
||||
EGL_RENDERABLE_TYPE, renderable_type,
|
||||
EGL_NONE
|
||||
};
|
||||
|
||||
// Get how many configs there are
|
||||
if (!eglChooseConfig( egl_dpy, attribs, nullptr, 0, &num_configs))
|
||||
{
|
||||
INFO_LOG(VIDEO, "Error: couldn't get an EGL visual config\n");
|
||||
continue;
|
||||
}
|
||||
|
||||
EGLConfig* config = new EGLConfig[num_configs];
|
||||
|
||||
// Get all the configurations
|
||||
if (!eglChooseConfig(egl_dpy, attribs, config, num_configs, &num_configs))
|
||||
{
|
||||
INFO_LOG(VIDEO, "Error: couldn't get an EGL visual config\n");
|
||||
delete[] config;
|
||||
continue;
|
||||
}
|
||||
|
||||
for (int i = 0; i < num_configs; ++i)
|
||||
{
|
||||
EGLint attribVal;
|
||||
bool ret;
|
||||
ret = eglGetConfigAttrib(egl_dpy, config[i], EGL_RENDERABLE_TYPE, &attribVal);
|
||||
if (ret)
|
||||
{
|
||||
if (attribVal & EGL_OPENGL_BIT)
|
||||
supportsGL = true;
|
||||
if (attribVal & (1 << 6)) /* EGL_OPENGL_ES3_BIT_KHR */
|
||||
supportsGLES3 = true;
|
||||
if (attribVal & EGL_OPENGL_ES2_BIT)
|
||||
supportsGLES2 = true;
|
||||
}
|
||||
}
|
||||
delete[] config;
|
||||
}
|
||||
|
||||
if (supportsGL)
|
||||
s_opengl_mode = GLInterfaceMode::MODE_OPENGL;
|
||||
else if (supportsGLES3)
|
||||
s_opengl_mode = GLInterfaceMode::MODE_OPENGLES3;
|
||||
else if (supportsGLES2)
|
||||
s_opengl_mode = GLInterfaceMode::MODE_OPENGLES2;
|
||||
|
||||
if (s_opengl_mode == GLInterfaceMode::MODE_DETECT) // Errored before we found a mode
|
||||
s_opengl_mode = GLInterfaceMode::MODE_OPENGL; // Fall back to OpenGL
|
||||
}
|
||||
|
||||
// Create rendering window.
|
||||
// Call browser: Core.cpp:EmuThread() > main.cpp:Video_Initialize()
|
||||
bool cInterfaceEGL::Create(void *window_handle, bool core)
|
||||
{
|
||||
const char *s;
|
||||
EGLint egl_major, egl_minor;
|
||||
|
||||
egl_dpy = OpenDisplay();
|
||||
|
||||
if (!egl_dpy)
|
||||
{
|
||||
INFO_LOG(VIDEO, "Error: eglGetDisplay() failed\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!eglInitialize(egl_dpy, &egl_major, &egl_minor))
|
||||
{
|
||||
INFO_LOG(VIDEO, "Error: eglInitialize() failed\n");
|
||||
return false;
|
||||
}
|
||||
|
||||
/* Detection code */
|
||||
EGLConfig config;
|
||||
EGLint num_configs;
|
||||
|
||||
DetectMode();
|
||||
|
||||
// attributes for a visual in RGBA format with at least
|
||||
// 8 bits per color
|
||||
int attribs[] = {
|
||||
EGL_RENDERABLE_TYPE, EGL_OPENGL_ES2_BIT,
|
||||
EGL_RED_SIZE, 8,
|
||||
EGL_GREEN_SIZE, 8,
|
||||
EGL_BLUE_SIZE, 8,
|
||||
EGL_NONE };
|
||||
|
||||
EGLint ctx_attribs[] = {
|
||||
EGL_CONTEXT_CLIENT_VERSION, 2,
|
||||
EGL_NONE
|
||||
};
|
||||
switch (s_opengl_mode)
|
||||
{
|
||||
case MODE_OPENGL:
|
||||
attribs[1] = EGL_OPENGL_BIT;
|
||||
ctx_attribs[0] = EGL_NONE;
|
||||
break;
|
||||
case MODE_OPENGLES2:
|
||||
attribs[1] = EGL_OPENGL_ES2_BIT;
|
||||
ctx_attribs[1] = 2;
|
||||
break;
|
||||
case MODE_OPENGLES3:
|
||||
attribs[1] = (1 << 6); /* EGL_OPENGL_ES3_BIT_KHR */
|
||||
ctx_attribs[1] = 3;
|
||||
break;
|
||||
default:
|
||||
ERROR_LOG(VIDEO, "Unknown opengl mode set\n");
|
||||
return false;
|
||||
break;
|
||||
}
|
||||
|
||||
if (!eglChooseConfig( egl_dpy, attribs, &config, 1, &num_configs))
|
||||
{
|
||||
INFO_LOG(VIDEO, "Error: couldn't get an EGL visual config\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
if (s_opengl_mode == MODE_OPENGL)
|
||||
eglBindAPI(EGL_OPENGL_API);
|
||||
else
|
||||
eglBindAPI(EGL_OPENGL_ES_API);
|
||||
|
||||
EGLNativeWindowType host_window = (EGLNativeWindowType) window_handle;
|
||||
EGLNativeWindowType native_window = InitializePlatform(host_window, config);
|
||||
|
||||
s = eglQueryString(egl_dpy, EGL_VERSION);
|
||||
INFO_LOG(VIDEO, "EGL_VERSION = %s\n", s);
|
||||
|
||||
s = eglQueryString(egl_dpy, EGL_VENDOR);
|
||||
INFO_LOG(VIDEO, "EGL_VENDOR = %s\n", s);
|
||||
|
||||
s = eglQueryString(egl_dpy, EGL_EXTENSIONS);
|
||||
INFO_LOG(VIDEO, "EGL_EXTENSIONS = %s\n", s);
|
||||
|
||||
s = eglQueryString(egl_dpy, EGL_CLIENT_APIS);
|
||||
INFO_LOG(VIDEO, "EGL_CLIENT_APIS = %s\n", s);
|
||||
|
||||
egl_ctx = eglCreateContext(egl_dpy, config, EGL_NO_CONTEXT, ctx_attribs );
|
||||
if (!egl_ctx)
|
||||
{
|
||||
INFO_LOG(VIDEO, "Error: eglCreateContext failed\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
egl_surf = eglCreateWindowSurface(egl_dpy, config, native_window, nullptr);
|
||||
if (!egl_surf)
|
||||
{
|
||||
INFO_LOG(VIDEO, "Error: eglCreateWindowSurface failed\n");
|
||||
exit(1);
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool cInterfaceEGL::MakeCurrent()
|
||||
{
|
||||
return eglMakeCurrent(egl_dpy, egl_surf, egl_surf, egl_ctx);
|
||||
}
|
||||
|
||||
bool cInterfaceEGL::ClearCurrent()
|
||||
{
|
||||
return eglMakeCurrent(egl_dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
|
||||
}
|
||||
|
||||
// Close backend
|
||||
void cInterfaceEGL::Shutdown()
|
||||
{
|
||||
ShutdownPlatform();
|
||||
if (egl_ctx && !eglMakeCurrent(egl_dpy, egl_surf, egl_surf, egl_ctx))
|
||||
NOTICE_LOG(VIDEO, "Could not release drawing context.");
|
||||
if (egl_ctx)
|
||||
{
|
||||
eglMakeCurrent(egl_dpy, EGL_NO_SURFACE, EGL_NO_SURFACE, EGL_NO_CONTEXT);
|
||||
if (!eglDestroyContext(egl_dpy, egl_ctx))
|
||||
NOTICE_LOG(VIDEO, "Could not destroy drawing context.");
|
||||
if (!eglDestroySurface(egl_dpy, egl_surf))
|
||||
NOTICE_LOG(VIDEO, "Could not destroy window surface.");
|
||||
if (!eglTerminate(egl_dpy))
|
||||
NOTICE_LOG(VIDEO, "Could not destroy display connection.");
|
||||
egl_ctx = nullptr;
|
||||
}
|
||||
}
|
33
Source/Core/Common/GL/GLInterface/EGL.h
Normal file
33
Source/Core/Common/GL/GLInterface/EGL.h
Normal file
@ -0,0 +1,33 @@
|
||||
// Copyright 2008 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <EGL/egl.h>
|
||||
|
||||
#include "Common/GL/GLInterfaceBase.h"
|
||||
#include "Core/ConfigManager.h"
|
||||
|
||||
class cInterfaceEGL : public cInterfaceBase
|
||||
{
|
||||
protected:
|
||||
void DetectMode();
|
||||
EGLSurface egl_surf;
|
||||
EGLContext egl_ctx;
|
||||
EGLDisplay egl_dpy;
|
||||
|
||||
virtual EGLDisplay OpenDisplay() = 0;
|
||||
virtual EGLNativeWindowType InitializePlatform(EGLNativeWindowType host_window, EGLConfig config) = 0;
|
||||
virtual void ShutdownPlatform() = 0;
|
||||
public:
|
||||
void SwapInterval(int Interval);
|
||||
void Swap();
|
||||
void SetMode(u32 mode) { s_opengl_mode = mode; }
|
||||
void* GetFuncAddress(const std::string& name);
|
||||
bool Create(void *window_handle, bool core);
|
||||
bool MakeCurrent();
|
||||
bool ClearCurrent();
|
||||
void Shutdown();
|
||||
};
|
29
Source/Core/Common/GL/GLInterface/EGLAndroid.cpp
Normal file
29
Source/Core/Common/GL/GLInterface/EGLAndroid.cpp
Normal file
@ -0,0 +1,29 @@
|
||||
// Copyright 2014 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLInterface/EGLAndroid.h"
|
||||
#include "Core/Host.h"
|
||||
|
||||
EGLDisplay cInterfaceEGLAndroid::OpenDisplay()
|
||||
{
|
||||
return eglGetDisplay(EGL_DEFAULT_DISPLAY);
|
||||
}
|
||||
|
||||
EGLNativeWindowType cInterfaceEGLAndroid::InitializePlatform(EGLNativeWindowType host_window, EGLConfig config)
|
||||
{
|
||||
EGLint format;
|
||||
eglGetConfigAttrib(egl_dpy, config, EGL_NATIVE_VISUAL_ID, &format);
|
||||
ANativeWindow_setBuffersGeometry(host_window, 0, 0, format);
|
||||
|
||||
const int width = ANativeWindow_getWidth(host_window);
|
||||
const int height = ANativeWindow_getHeight(host_window);
|
||||
GLInterface->SetBackBufferDimensions(width, height);
|
||||
|
||||
return host_window;
|
||||
}
|
||||
|
||||
void cInterfaceEGLAndroid::ShutdownPlatform()
|
||||
{
|
||||
}
|
||||
|
15
Source/Core/Common/GL/GLInterface/EGLAndroid.h
Normal file
15
Source/Core/Common/GL/GLInterface/EGLAndroid.h
Normal file
@ -0,0 +1,15 @@
|
||||
// Copyright 2014 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Common/GL/GLInterface/EGL.h"
|
||||
|
||||
class cInterfaceEGLAndroid : public cInterfaceEGL
|
||||
{
|
||||
protected:
|
||||
EGLDisplay OpenDisplay() override;
|
||||
EGLNativeWindowType InitializePlatform(EGLNativeWindowType host_window, EGLConfig config) override;
|
||||
void ShutdownPlatform() override;
|
||||
};
|
44
Source/Core/Common/GL/GLInterface/EGLX11.cpp
Normal file
44
Source/Core/Common/GL/GLInterface/EGLX11.cpp
Normal file
@ -0,0 +1,44 @@
|
||||
// Copyright 2014 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLInterface/EGLX11.h"
|
||||
|
||||
EGLDisplay cInterfaceEGLX11::OpenDisplay()
|
||||
{
|
||||
dpy = XOpenDisplay(nullptr);
|
||||
XWindow.Initialize(dpy);
|
||||
return eglGetDisplay(dpy);
|
||||
}
|
||||
|
||||
EGLNativeWindowType cInterfaceEGLX11::InitializePlatform(EGLNativeWindowType host_window, EGLConfig config)
|
||||
{
|
||||
EGLint vid;
|
||||
eglGetConfigAttrib(egl_dpy, config, EGL_NATIVE_VISUAL_ID, &vid);
|
||||
|
||||
XVisualInfo visTemplate;
|
||||
visTemplate.visualid = vid;
|
||||
|
||||
XVisualInfo *vi;
|
||||
int nVisuals;
|
||||
vi = XGetVisualInfo(dpy, VisualIDMask, &visTemplate, &nVisuals);
|
||||
|
||||
XWindowAttributes attribs;
|
||||
if (!XGetWindowAttributes(dpy, (Window)host_window, &attribs))
|
||||
{
|
||||
ERROR_LOG(VIDEO, "Window attribute retrieval failed");
|
||||
return 0;
|
||||
}
|
||||
|
||||
s_backbuffer_width = attribs.width;
|
||||
s_backbuffer_height = attribs.height;
|
||||
|
||||
return (EGLNativeWindowType) XWindow.CreateXWindow((Window) host_window, vi);
|
||||
}
|
||||
|
||||
void cInterfaceEGLX11::ShutdownPlatform()
|
||||
{
|
||||
XWindow.DestroyXWindow();
|
||||
XCloseDisplay(dpy);
|
||||
}
|
||||
|
21
Source/Core/Common/GL/GLInterface/EGLX11.h
Normal file
21
Source/Core/Common/GL/GLInterface/EGLX11.h
Normal file
@ -0,0 +1,21 @@
|
||||
// Copyright 2014 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <X11/Xlib.h>
|
||||
|
||||
#include "Common/GL/GLInterface/EGL.h"
|
||||
#include "Common/GL/GLInterface/X11_Util.h"
|
||||
|
||||
class cInterfaceEGLX11 : public cInterfaceEGL
|
||||
{
|
||||
private:
|
||||
cX11Window XWindow;
|
||||
Display *dpy;
|
||||
protected:
|
||||
EGLDisplay OpenDisplay() override;
|
||||
EGLNativeWindowType InitializePlatform(EGLNativeWindowType host_window, EGLConfig config) override;
|
||||
void ShutdownPlatform() override;
|
||||
};
|
40
Source/Core/Common/GL/GLInterface/GLInterface.cpp
Normal file
40
Source/Core/Common/GL/GLInterface/GLInterface.cpp
Normal file
@ -0,0 +1,40 @@
|
||||
// Copyright 2014 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/GL/GLInterfaceBase.h"
|
||||
|
||||
#ifdef ANDROID
|
||||
#include "Common/GL/GLInterface/EGLAndroid.h"
|
||||
#elif defined(__APPLE__)
|
||||
#include "Common/GL/GLInterface/AGL.h"
|
||||
#elif defined(_WIN32)
|
||||
#include "Common/GL/GLInterface/WGL.h"
|
||||
#elif HAVE_X11
|
||||
#if defined(USE_EGL) && USE_EGL
|
||||
#include "Common/GL/GLInterface/EGLX11.h"
|
||||
#else
|
||||
#include "Common/GL/GLInterface/GLX.h"
|
||||
#endif
|
||||
#else
|
||||
#error Platform doesnt have a GLInterface
|
||||
#endif
|
||||
|
||||
cInterfaceBase* HostGL_CreateGLInterface()
|
||||
{
|
||||
#ifdef ANDROID
|
||||
return new cInterfaceEGLAndroid;
|
||||
#elif defined(__APPLE__)
|
||||
return new cInterfaceAGL;
|
||||
#elif defined(_WIN32)
|
||||
return new cInterfaceWGL;
|
||||
#elif defined(HAVE_X11) && HAVE_X11
|
||||
#if defined(USE_EGL) && USE_EGL
|
||||
return new cInterfaceEGLX11;
|
||||
#else
|
||||
return new cInterfaceGLX;
|
||||
#endif
|
||||
#else
|
||||
return nullptr;
|
||||
#endif
|
||||
}
|
199
Source/Core/Common/GL/GLInterface/GLX.cpp
Normal file
199
Source/Core/Common/GL/GLInterface/GLX.cpp
Normal file
@ -0,0 +1,199 @@
|
||||
// Copyright 2012 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "Common/GL/GLInterface/GLX.h"
|
||||
|
||||
#include "VideoCommon/RenderBase.h"
|
||||
#include "VideoCommon/VideoConfig.h"
|
||||
|
||||
#define GLX_CONTEXT_MAJOR_VERSION_ARB 0x2091
|
||||
#define GLX_CONTEXT_MINOR_VERSION_ARB 0x2092
|
||||
|
||||
typedef GLXContext (*PFNGLXCREATECONTEXTATTRIBSPROC)(Display*, GLXFBConfig, GLXContext, Bool, const int*);
|
||||
typedef int ( * PFNGLXSWAPINTERVALSGIPROC) (int interval);
|
||||
|
||||
static PFNGLXCREATECONTEXTATTRIBSPROC glXCreateContextAttribs = nullptr;
|
||||
static PFNGLXSWAPINTERVALSGIPROC glXSwapIntervalSGI = nullptr;
|
||||
|
||||
static bool s_glxError;
|
||||
static int ctxErrorHandler(Display *dpy, XErrorEvent *ev)
|
||||
{
|
||||
s_glxError = true;
|
||||
return 0;
|
||||
}
|
||||
|
||||
void cInterfaceGLX::SwapInterval(int Interval)
|
||||
{
|
||||
if (glXSwapIntervalSGI)
|
||||
glXSwapIntervalSGI(Interval);
|
||||
else
|
||||
ERROR_LOG(VIDEO, "No support for SwapInterval (framerate clamped to monitor refresh rate).");
|
||||
}
|
||||
void* cInterfaceGLX::GetFuncAddress(const std::string& name)
|
||||
{
|
||||
return (void*)glXGetProcAddress((const GLubyte*)name.c_str());
|
||||
}
|
||||
|
||||
void cInterfaceGLX::Swap()
|
||||
{
|
||||
glXSwapBuffers(dpy, win);
|
||||
}
|
||||
|
||||
// Create rendering window.
|
||||
// Call browser: Core.cpp:EmuThread() > main.cpp:Video_Initialize()
|
||||
bool cInterfaceGLX::Create(void *window_handle, bool core)
|
||||
{
|
||||
dpy = XOpenDisplay(nullptr);
|
||||
int screen = DefaultScreen(dpy);
|
||||
|
||||
// checking glx version
|
||||
int glxMajorVersion, glxMinorVersion;
|
||||
glXQueryVersion(dpy, &glxMajorVersion, &glxMinorVersion);
|
||||
if (glxMajorVersion < 1 || (glxMajorVersion == 1 && glxMinorVersion < 4))
|
||||
{
|
||||
ERROR_LOG(VIDEO, "glX-Version %d.%d detected, but need at least 1.4",
|
||||
glxMajorVersion, glxMinorVersion);
|
||||
return false;
|
||||
}
|
||||
|
||||
// loading core context creation function
|
||||
glXCreateContextAttribs = (PFNGLXCREATECONTEXTATTRIBSPROC)GetFuncAddress("glXCreateContextAttribsARB");
|
||||
if (!glXCreateContextAttribs)
|
||||
{
|
||||
ERROR_LOG(VIDEO, "glXCreateContextAttribsARB not found, do you support GLX_ARB_create_context?");
|
||||
return false;
|
||||
}
|
||||
|
||||
// choosing framebuffer
|
||||
int visual_attribs[] =
|
||||
{
|
||||
GLX_X_RENDERABLE , True,
|
||||
GLX_DRAWABLE_TYPE , GLX_WINDOW_BIT,
|
||||
GLX_X_VISUAL_TYPE , GLX_TRUE_COLOR,
|
||||
GLX_RED_SIZE , 8,
|
||||
GLX_GREEN_SIZE , 8,
|
||||
GLX_BLUE_SIZE , 8,
|
||||
GLX_DEPTH_SIZE , 0,
|
||||
GLX_STENCIL_SIZE , 0,
|
||||
GLX_DOUBLEBUFFER , True,
|
||||
None
|
||||
};
|
||||
int fbcount = 0;
|
||||
GLXFBConfig* fbc = glXChooseFBConfig(dpy, screen, visual_attribs, &fbcount);
|
||||
if (!fbc || !fbcount)
|
||||
{
|
||||
ERROR_LOG(VIDEO, "Failed to retrieve a framebuffer config");
|
||||
return false;
|
||||
}
|
||||
fbconfig = *fbc;
|
||||
XFree(fbc);
|
||||
|
||||
// Get an appropriate visual
|
||||
XVisualInfo* vi = glXGetVisualFromFBConfig(dpy, fbconfig);
|
||||
|
||||
s_glxError = false;
|
||||
XErrorHandler oldHandler = XSetErrorHandler(&ctxErrorHandler);
|
||||
|
||||
// Create a GLX context.
|
||||
// We try to get a 4.0 core profile, else we try 3.3, else try it with anything we get.
|
||||
int context_attribs[] =
|
||||
{
|
||||
GLX_CONTEXT_MAJOR_VERSION_ARB, 4,
|
||||
GLX_CONTEXT_MINOR_VERSION_ARB, 0,
|
||||
GLX_CONTEXT_PROFILE_MASK_ARB, GLX_CONTEXT_CORE_PROFILE_BIT_ARB,
|
||||
GLX_CONTEXT_FLAGS_ARB, GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB,
|
||||
None
|
||||
};
|
||||
ctx = nullptr;
|
||||
if (core)
|
||||
{
|
||||
ctx = glXCreateContextAttribs(dpy, fbconfig, 0, True, context_attribs);
|
||||
XSync(dpy, False);
|
||||
}
|
||||
if (core && (!ctx || s_glxError))
|
||||
{
|
||||
int context_attribs_33[] =
|
||||
{
|
||||
GLX_CONTEXT_MAJOR_VERSION_ARB, 3,
|
||||
GLX_CONTEXT_MINOR_VERSION_ARB, 3,
|
||||
GLX_CONTEXT_PROFILE_MASK_ARB, GLX_CONTEXT_CORE_PROFILE_BIT_ARB,
|
||||
GLX_CONTEXT_FLAGS_ARB, GLX_CONTEXT_FORWARD_COMPATIBLE_BIT_ARB,
|
||||
None
|
||||
};
|
||||
s_glxError = false;
|
||||
ctx = glXCreateContextAttribs(dpy, fbconfig, 0, True, context_attribs_33);
|
||||
XSync(dpy, False);
|
||||
|
||||
}
|
||||
if (!ctx || s_glxError)
|
||||
{
|
||||
int context_attribs_legacy[] =
|
||||
{
|
||||
GLX_CONTEXT_MAJOR_VERSION_ARB, 1,
|
||||
GLX_CONTEXT_MINOR_VERSION_ARB, 0,
|
||||
None
|
||||
};
|
||||
s_glxError = false;
|
||||
ctx = glXCreateContextAttribs(dpy, fbconfig, 0, True, context_attribs_legacy);
|
||||
XSync(dpy, False);
|
||||
|
||||
}
|
||||
if (!ctx || s_glxError)
|
||||
{
|
||||
ERROR_LOG(VIDEO, "Unable to create GL context.");
|
||||
return false;
|
||||
}
|
||||
XSetErrorHandler(oldHandler);
|
||||
|
||||
XWindow.Initialize(dpy);
|
||||
|
||||
Window parent = (Window)window_handle;
|
||||
|
||||
XWindowAttributes attribs;
|
||||
if (!XGetWindowAttributes(dpy, parent, &attribs))
|
||||
{
|
||||
ERROR_LOG(VIDEO, "Window attribute retrieval failed");
|
||||
return false;
|
||||
}
|
||||
|
||||
s_backbuffer_width = attribs.width;
|
||||
s_backbuffer_height = attribs.height;
|
||||
|
||||
win = XWindow.CreateXWindow(parent, vi);
|
||||
XFree(vi);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool cInterfaceGLX::MakeCurrent()
|
||||
{
|
||||
bool success = glXMakeCurrent(dpy, win, ctx);
|
||||
if (success)
|
||||
{
|
||||
// load this function based on the current bound context
|
||||
glXSwapIntervalSGI = (PFNGLXSWAPINTERVALSGIPROC)GLInterface->GetFuncAddress("glXSwapIntervalSGI");
|
||||
}
|
||||
return success;
|
||||
}
|
||||
|
||||
bool cInterfaceGLX::ClearCurrent()
|
||||
{
|
||||
return glXMakeCurrent(dpy, None, nullptr);
|
||||
}
|
||||
|
||||
|
||||
// Close backend
|
||||
void cInterfaceGLX::Shutdown()
|
||||
{
|
||||
XWindow.DestroyXWindow();
|
||||
if (ctx)
|
||||
{
|
||||
glXDestroyContext(dpy, ctx);
|
||||
XCloseDisplay(dpy);
|
||||
ctx = nullptr;
|
||||
}
|
||||
}
|
||||
|
30
Source/Core/Common/GL/GLInterface/GLX.h
Normal file
30
Source/Core/Common/GL/GLInterface/GLX.h
Normal file
@ -0,0 +1,30 @@
|
||||
// Copyright 2008 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <GL/glx.h>
|
||||
|
||||
#include "Common/GL/GLInterfaceBase.h"
|
||||
#include "Common/GL/GLInterface/X11_Util.h"
|
||||
|
||||
class cInterfaceGLX : public cInterfaceBase
|
||||
{
|
||||
private:
|
||||
cX11Window XWindow;
|
||||
Display *dpy;
|
||||
Window win;
|
||||
GLXContext ctx;
|
||||
GLXFBConfig fbconfig;
|
||||
public:
|
||||
friend class cX11Window;
|
||||
void SwapInterval(int Interval) override;
|
||||
void Swap() override;
|
||||
void* GetFuncAddress(const std::string& name) override;
|
||||
bool Create(void *window_handle, bool core) override;
|
||||
bool MakeCurrent() override;
|
||||
bool ClearCurrent() override;
|
||||
void Shutdown() override;
|
||||
};
|
182
Source/Core/Common/GL/GLInterface/WGL.cpp
Normal file
182
Source/Core/Common/GL/GLInterface/WGL.cpp
Normal file
@ -0,0 +1,182 @@
|
||||
// Copyright 2012 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "Common/GL/GLInterface/WGL.h"
|
||||
|
||||
#include "Core/Host.h"
|
||||
|
||||
#include "VideoCommon/RenderBase.h"
|
||||
#include "VideoCommon/VertexShaderManager.h"
|
||||
#include "VideoCommon/VideoConfig.h"
|
||||
|
||||
static HDC hDC = nullptr; // Private GDI Device Context
|
||||
static HGLRC hRC = nullptr; // Permanent Rendering Context
|
||||
static HINSTANCE dllHandle = nullptr; // Handle to OpenGL32.dll
|
||||
|
||||
// typedef from wglext.h
|
||||
typedef BOOL(WINAPI * PFNWGLSWAPINTERVALEXTPROC) (int interval);
|
||||
static PFNWGLSWAPINTERVALEXTPROC wglSwapIntervalEXT = nullptr;
|
||||
|
||||
void cInterfaceWGL::SwapInterval(int Interval)
|
||||
{
|
||||
if (wglSwapIntervalEXT)
|
||||
wglSwapIntervalEXT(Interval);
|
||||
else
|
||||
ERROR_LOG(VIDEO, "No support for SwapInterval (framerate clamped to monitor refresh rate).");
|
||||
}
|
||||
void cInterfaceWGL::Swap()
|
||||
{
|
||||
SwapBuffers(hDC);
|
||||
}
|
||||
|
||||
void* cInterfaceWGL::GetFuncAddress(const std::string& name)
|
||||
{
|
||||
void* func = (void*)wglGetProcAddress((LPCSTR)name.c_str());
|
||||
if (func == nullptr)
|
||||
func = (void*)GetProcAddress(dllHandle, (LPCSTR)name.c_str());
|
||||
return func;
|
||||
}
|
||||
|
||||
// Draw messages on top of the screen
|
||||
bool cInterfaceWGL::PeekMessages()
|
||||
{
|
||||
// TODO: peekmessage
|
||||
MSG msg;
|
||||
while (PeekMessage(&msg, 0, 0, 0, PM_REMOVE))
|
||||
{
|
||||
if (msg.message == WM_QUIT)
|
||||
return FALSE;
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
return TRUE;
|
||||
}
|
||||
|
||||
// Create rendering window.
|
||||
// Call browser: Core.cpp:EmuThread() > main.cpp:Video_Initialize()
|
||||
bool cInterfaceWGL::Create(void *window_handle, bool core)
|
||||
{
|
||||
if (window_handle == nullptr)
|
||||
return false;
|
||||
|
||||
HWND window_handle_reified = reinterpret_cast<HWND>(window_handle);
|
||||
RECT window_rect = {0};
|
||||
|
||||
if (!GetClientRect(window_handle_reified, &window_rect))
|
||||
return false;
|
||||
|
||||
// Control window size and picture scaling
|
||||
int twidth = (window_rect.right - window_rect.left);
|
||||
int theight = (window_rect.bottom - window_rect.top);
|
||||
s_backbuffer_width = twidth;
|
||||
s_backbuffer_height = theight;
|
||||
|
||||
m_window_handle = window_handle_reified;
|
||||
|
||||
#ifdef _WIN32
|
||||
dllHandle = LoadLibrary(TEXT("OpenGL32.dll"));
|
||||
#endif
|
||||
|
||||
PIXELFORMATDESCRIPTOR pfd = // pfd Tells Windows How We Want Things To Be
|
||||
{
|
||||
sizeof(PIXELFORMATDESCRIPTOR), // Size Of This Pixel Format Descriptor
|
||||
1, // Version Number
|
||||
PFD_DRAW_TO_WINDOW | // Format Must Support Window
|
||||
PFD_SUPPORT_OPENGL | // Format Must Support OpenGL
|
||||
PFD_DOUBLEBUFFER, // Must Support Double Buffering
|
||||
PFD_TYPE_RGBA, // Request An RGBA Format
|
||||
32, // Select Our Color Depth
|
||||
0, 0, 0, 0, 0, 0, // Color Bits Ignored
|
||||
0, // 8bit Alpha Buffer
|
||||
0, // Shift Bit Ignored
|
||||
0, // No Accumulation Buffer
|
||||
0, 0, 0, 0, // Accumulation Bits Ignored
|
||||
0, // 0Bit Z-Buffer (Depth Buffer)
|
||||
0, // 0bit Stencil Buffer
|
||||
0, // No Auxiliary Buffer
|
||||
PFD_MAIN_PLANE, // Main Drawing Layer
|
||||
0, // Reserved
|
||||
0, 0, 0 // Layer Masks Ignored
|
||||
};
|
||||
|
||||
int PixelFormat; // Holds The Results After Searching For A Match
|
||||
|
||||
if (!(hDC = GetDC(window_handle_reified)))
|
||||
{
|
||||
PanicAlert("(1) Can't create an OpenGL Device context. Fail.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!(PixelFormat = ChoosePixelFormat(hDC, &pfd)))
|
||||
{
|
||||
PanicAlert("(2) Can't find a suitable PixelFormat.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!SetPixelFormat(hDC, PixelFormat, &pfd))
|
||||
{
|
||||
PanicAlert("(3) Can't set the PixelFormat.");
|
||||
return false;
|
||||
}
|
||||
|
||||
if (!(hRC = wglCreateContext(hDC)))
|
||||
{
|
||||
PanicAlert("(4) Can't create an OpenGL rendering context.");
|
||||
return false;
|
||||
}
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
bool cInterfaceWGL::MakeCurrent()
|
||||
{
|
||||
bool success = wglMakeCurrent(hDC, hRC) ? true : false;
|
||||
if (success)
|
||||
{
|
||||
// Grab the swap interval function pointer
|
||||
wglSwapIntervalEXT = (PFNWGLSWAPINTERVALEXTPROC)GLInterface->GetFuncAddress("wglSwapIntervalEXT");
|
||||
}
|
||||
return success;
|
||||
}
|
||||
|
||||
bool cInterfaceWGL::ClearCurrent()
|
||||
{
|
||||
return wglMakeCurrent(hDC, nullptr) ? true : false;
|
||||
}
|
||||
|
||||
// Update window width, size and etc. Called from Render.cpp
|
||||
void cInterfaceWGL::Update()
|
||||
{
|
||||
RECT rcWindow;
|
||||
GetClientRect(m_window_handle, &rcWindow);
|
||||
|
||||
// Get the new window width and height
|
||||
s_backbuffer_width = (rcWindow.right - rcWindow.left);
|
||||
s_backbuffer_height = (rcWindow.bottom - rcWindow.top);
|
||||
}
|
||||
|
||||
// Close backend
|
||||
void cInterfaceWGL::Shutdown()
|
||||
{
|
||||
if (hRC)
|
||||
{
|
||||
if (!wglMakeCurrent(nullptr, nullptr))
|
||||
NOTICE_LOG(VIDEO, "Could not release drawing context.");
|
||||
|
||||
if (!wglDeleteContext(hRC))
|
||||
ERROR_LOG(VIDEO, "Attempt to release rendering context failed.");
|
||||
|
||||
hRC = nullptr;
|
||||
}
|
||||
|
||||
if (hDC && !ReleaseDC(m_window_handle, hDC))
|
||||
{
|
||||
ERROR_LOG(VIDEO, "Attempt to release device context failed.");
|
||||
hDC = nullptr;
|
||||
}
|
||||
}
|
||||
|
||||
|
25
Source/Core/Common/GL/GLInterface/WGL.h
Normal file
25
Source/Core/Common/GL/GLInterface/WGL.h
Normal file
@ -0,0 +1,25 @@
|
||||
// Copyright 2008 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include "Common/GL/GLInterfaceBase.h"
|
||||
|
||||
class cInterfaceWGL : public cInterfaceBase
|
||||
{
|
||||
public:
|
||||
void SwapInterval(int Interval);
|
||||
void Swap();
|
||||
void* GetFuncAddress(const std::string& name);
|
||||
bool Create(void *window_handle, bool core);
|
||||
bool MakeCurrent();
|
||||
bool ClearCurrent();
|
||||
void Shutdown();
|
||||
|
||||
void Update();
|
||||
bool PeekMessages();
|
||||
|
||||
HWND m_window_handle;
|
||||
};
|
77
Source/Core/Common/GL/GLInterface/X11_Util.cpp
Normal file
77
Source/Core/Common/GL/GLInterface/X11_Util.cpp
Normal file
@ -0,0 +1,77 @@
|
||||
// Copyright 2012 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/Thread.h"
|
||||
#include "Common/GL/GLInterfaceBase.h"
|
||||
#include "Common/GL/GLInterface/X11_Util.h"
|
||||
|
||||
#include "Core/Host.h"
|
||||
|
||||
#include "VideoCommon/VideoConfig.h"
|
||||
|
||||
void cX11Window::Initialize(Display *_dpy)
|
||||
{
|
||||
dpy = _dpy;
|
||||
}
|
||||
|
||||
Window cX11Window::CreateXWindow(Window parent, XVisualInfo *vi)
|
||||
{
|
||||
XSetWindowAttributes attr;
|
||||
|
||||
colormap = XCreateColormap(dpy, parent, vi->visual, AllocNone);
|
||||
|
||||
// Setup window attributes
|
||||
attr.colormap = colormap;
|
||||
|
||||
XWindowAttributes attribs;
|
||||
if (!XGetWindowAttributes(dpy, parent, &attribs))
|
||||
{
|
||||
ERROR_LOG(VIDEO, "Window attribute retrieval failed");
|
||||
return 0;
|
||||
}
|
||||
|
||||
// Create the window
|
||||
win = XCreateWindow(dpy, parent,
|
||||
0, 0, attribs.width, attribs.height, 0,
|
||||
vi->depth, InputOutput, vi->visual,
|
||||
CWColormap, &attr);
|
||||
XSelectInput(dpy, parent, StructureNotifyMask);
|
||||
XMapWindow(dpy, win);
|
||||
XSync(dpy, True);
|
||||
|
||||
xEventThread = std::thread(&cX11Window::XEventThread, this);
|
||||
|
||||
return win;
|
||||
}
|
||||
|
||||
void cX11Window::DestroyXWindow(void)
|
||||
{
|
||||
XUnmapWindow(dpy, win);
|
||||
win = 0;
|
||||
if (xEventThread.joinable())
|
||||
xEventThread.join();
|
||||
XFreeColormap(dpy, colormap);
|
||||
}
|
||||
|
||||
void cX11Window::XEventThread()
|
||||
{
|
||||
while (win)
|
||||
{
|
||||
XEvent event;
|
||||
for (int num_events = XPending(dpy); num_events > 0; num_events--)
|
||||
{
|
||||
XNextEvent(dpy, &event);
|
||||
switch (event.type)
|
||||
{
|
||||
case ConfigureNotify:
|
||||
XResizeWindow(dpy, win, event.xconfigure.width, event.xconfigure.height);
|
||||
GLInterface->SetBackBufferDimensions(event.xconfigure.width, event.xconfigure.height);
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
Common::SleepCurrentThread(20);
|
||||
}
|
||||
}
|
26
Source/Core/Common/GL/GLInterface/X11_Util.h
Normal file
26
Source/Core/Common/GL/GLInterface/X11_Util.h
Normal file
@ -0,0 +1,26 @@
|
||||
// Copyright 2008 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
#include <thread>
|
||||
#include <X11/keysym.h>
|
||||
#include <X11/Xlib.h>
|
||||
#include <X11/Xutil.h>
|
||||
|
||||
class cX11Window
|
||||
{
|
||||
private:
|
||||
void XEventThread();
|
||||
std::thread xEventThread;
|
||||
Colormap colormap;
|
||||
public:
|
||||
void Initialize(Display *dpy);
|
||||
Window CreateXWindow(Window parent, XVisualInfo *vi);
|
||||
void DestroyXWindow();
|
||||
|
||||
Display *dpy;
|
||||
Window win;
|
||||
};
|
49
Source/Core/Common/GL/GLInterfaceBase.h
Normal file
49
Source/Core/Common/GL/GLInterfaceBase.h
Normal file
@ -0,0 +1,49 @@
|
||||
// Copyright 2008 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <string>
|
||||
|
||||
#include "Common/CommonTypes.h"
|
||||
|
||||
enum GLInterfaceMode {
|
||||
MODE_DETECT = 0,
|
||||
MODE_OPENGL,
|
||||
MODE_OPENGLES2,
|
||||
MODE_OPENGLES3,
|
||||
};
|
||||
|
||||
class cInterfaceBase
|
||||
{
|
||||
protected:
|
||||
// Window dimensions.
|
||||
u32 s_backbuffer_width;
|
||||
u32 s_backbuffer_height;
|
||||
|
||||
u32 s_opengl_mode;
|
||||
public:
|
||||
virtual ~cInterfaceBase() {}
|
||||
virtual void Swap() {}
|
||||
virtual void SetMode(u32 mode) { s_opengl_mode = GLInterfaceMode::MODE_OPENGL; }
|
||||
virtual u32 GetMode() { return s_opengl_mode; }
|
||||
virtual void* GetFuncAddress(const std::string& name) { return nullptr; }
|
||||
virtual bool Create(void *window_handle, bool core = true) { return true; }
|
||||
virtual bool MakeCurrent() { return true; }
|
||||
virtual bool ClearCurrent() { return true; }
|
||||
virtual void Shutdown() {}
|
||||
|
||||
virtual void SwapInterval(int Interval) { }
|
||||
virtual u32 GetBackBufferWidth() { return s_backbuffer_width; }
|
||||
virtual u32 GetBackBufferHeight() { return s_backbuffer_height; }
|
||||
virtual void SetBackBufferDimensions(u32 W, u32 H) {s_backbuffer_width = W; s_backbuffer_height = H; }
|
||||
virtual void Update() { }
|
||||
virtual bool PeekMessages() { return false; }
|
||||
};
|
||||
|
||||
extern cInterfaceBase *GLInterface;
|
||||
|
||||
// This function has to be defined along the Host_ functions from Core/Host.h.
|
||||
// Current canonical implementation: DolphinWX/GLInterface/GLInterface.cpp.
|
||||
cInterfaceBase* HostGL_CreateGLInterface();
|
154
Source/Core/Common/GL/GLUtil.cpp
Normal file
154
Source/Core/Common/GL/GLUtil.cpp
Normal file
@ -0,0 +1,154 @@
|
||||
// Copyright 2008 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#include "Common/IniFile.h"
|
||||
#include "Common/StringUtil.h"
|
||||
#include "Common/GL/GLInterfaceBase.h"
|
||||
#include "Common/GL/GLUtil.h"
|
||||
|
||||
#include "Core/ConfigManager.h"
|
||||
#include "Core/Core.h"
|
||||
|
||||
#include "VideoBackends/OGL/Render.h"
|
||||
#include "VideoBackends/OGL/VideoBackend.h"
|
||||
|
||||
#include "VideoCommon/VideoConfig.h"
|
||||
|
||||
cInterfaceBase *GLInterface;
|
||||
static GLuint attributelessVAO = 0;
|
||||
static GLuint attributelessVBO = 0;
|
||||
|
||||
namespace OGL
|
||||
{
|
||||
|
||||
// Draw messages on top of the screen
|
||||
unsigned int VideoBackend::PeekMessages()
|
||||
{
|
||||
return GLInterface->PeekMessages();
|
||||
}
|
||||
|
||||
}
|
||||
void InitInterface()
|
||||
{
|
||||
GLInterface = HostGL_CreateGLInterface();
|
||||
}
|
||||
|
||||
GLuint OpenGL_CompileProgram(const char* vertexShader, const char* fragmentShader)
|
||||
{
|
||||
// generate objects
|
||||
GLuint vertexShaderID = glCreateShader(GL_VERTEX_SHADER);
|
||||
GLuint fragmentShaderID = glCreateShader(GL_FRAGMENT_SHADER);
|
||||
GLuint programID = glCreateProgram();
|
||||
|
||||
// compile vertex shader
|
||||
glShaderSource(vertexShaderID, 1, &vertexShader, nullptr);
|
||||
glCompileShader(vertexShaderID);
|
||||
#if defined(_DEBUG) || defined(DEBUGFAST) || defined(DEBUG_GLSL)
|
||||
GLint Result = GL_FALSE;
|
||||
char stringBuffer[1024];
|
||||
GLsizei stringBufferUsage = 0;
|
||||
glGetShaderiv(vertexShaderID, GL_COMPILE_STATUS, &Result);
|
||||
glGetShaderInfoLog(vertexShaderID, 1024, &stringBufferUsage, stringBuffer);
|
||||
|
||||
if (Result && stringBufferUsage)
|
||||
{
|
||||
ERROR_LOG(VIDEO, "GLSL vertex shader warnings:\n%s%s", stringBuffer, vertexShader);
|
||||
}
|
||||
else if (!Result)
|
||||
{
|
||||
ERROR_LOG(VIDEO, "GLSL vertex shader error:\n%s%s", stringBuffer, vertexShader);
|
||||
}
|
||||
else
|
||||
{
|
||||
DEBUG_LOG(VIDEO, "GLSL vertex shader compiled:\n%s", vertexShader);
|
||||
}
|
||||
|
||||
bool shader_errors = !Result;
|
||||
#endif
|
||||
|
||||
// compile fragment shader
|
||||
glShaderSource(fragmentShaderID, 1, &fragmentShader, nullptr);
|
||||
glCompileShader(fragmentShaderID);
|
||||
#if defined(_DEBUG) || defined(DEBUGFAST) || defined(DEBUG_GLSL)
|
||||
glGetShaderiv(fragmentShaderID, GL_COMPILE_STATUS, &Result);
|
||||
glGetShaderInfoLog(fragmentShaderID, 1024, &stringBufferUsage, stringBuffer);
|
||||
|
||||
if (Result && stringBufferUsage)
|
||||
{
|
||||
ERROR_LOG(VIDEO, "GLSL fragment shader warnings:\n%s%s", stringBuffer, fragmentShader);
|
||||
}
|
||||
else if (!Result)
|
||||
{
|
||||
ERROR_LOG(VIDEO, "GLSL fragment shader error:\n%s%s", stringBuffer, fragmentShader);
|
||||
}
|
||||
else
|
||||
{
|
||||
DEBUG_LOG(VIDEO, "GLSL fragment shader compiled:\n%s", fragmentShader);
|
||||
}
|
||||
|
||||
shader_errors |= !Result;
|
||||
#endif
|
||||
|
||||
// link them
|
||||
glAttachShader(programID, vertexShaderID);
|
||||
glAttachShader(programID, fragmentShaderID);
|
||||
glLinkProgram(programID);
|
||||
#if defined(_DEBUG) || defined(DEBUGFAST) || defined(DEBUG_GLSL)
|
||||
glGetProgramiv(programID, GL_LINK_STATUS, &Result);
|
||||
glGetProgramInfoLog(programID, 1024, &stringBufferUsage, stringBuffer);
|
||||
|
||||
if (Result && stringBufferUsage)
|
||||
{
|
||||
ERROR_LOG(VIDEO, "GLSL linker warnings:\n%s%s%s", stringBuffer, vertexShader, fragmentShader);
|
||||
}
|
||||
else if (!Result && !shader_errors)
|
||||
{
|
||||
ERROR_LOG(VIDEO, "GLSL linker error:\n%s%s%s", stringBuffer, vertexShader, fragmentShader);
|
||||
}
|
||||
#endif
|
||||
|
||||
// cleanup
|
||||
glDeleteShader(vertexShaderID);
|
||||
glDeleteShader(fragmentShaderID);
|
||||
|
||||
return programID;
|
||||
}
|
||||
|
||||
void OpenGL_CreateAttributelessVAO()
|
||||
{
|
||||
glGenVertexArrays(1, &attributelessVAO);
|
||||
_dbg_assert_msg_(VIDEO, attributelessVAO != 0, "Attributeless VAO should have been created successfully.")
|
||||
|
||||
// In a compatibility context, we require a valid, bound array buffer.
|
||||
glGenBuffers(1, &attributelessVBO);
|
||||
_dbg_assert_msg_(VIDEO, attributelessVBO != 0, "Attributeless VBO should have been created successfully.")
|
||||
|
||||
// Initialize the buffer with nothing. 16 floats is an arbitrary size that may work around driver issues.
|
||||
glBindBuffer(GL_ARRAY_BUFFER, attributelessVBO);
|
||||
glBufferData(GL_ARRAY_BUFFER, sizeof(GLfloat) * 16, nullptr, GL_STATIC_DRAW);
|
||||
|
||||
// We must also define vertex attribute 0.
|
||||
glBindVertexArray(attributelessVAO);
|
||||
glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 0, nullptr);
|
||||
glEnableVertexAttribArray(0);
|
||||
}
|
||||
|
||||
void OpenGL_BindAttributelessVAO()
|
||||
{
|
||||
_dbg_assert_msg_(VIDEO, attributelessVAO != 0, "Attributeless VAO should have already been created.")
|
||||
glBindVertexArray(attributelessVAO);
|
||||
}
|
||||
|
||||
void OpenGL_DeleteAttributelessVAO()
|
||||
{
|
||||
_dbg_assert_msg_(VIDEO, attributelessVAO != 0, "Attributeless VAO should have already been created.")
|
||||
if (attributelessVAO != 0)
|
||||
{
|
||||
glDeleteVertexArrays(1, &attributelessVAO);
|
||||
glDeleteBuffers(1, &attributelessVBO);
|
||||
|
||||
attributelessVAO = 0;
|
||||
attributelessVBO = 0;
|
||||
}
|
||||
}
|
33
Source/Core/Common/GL/GLUtil.h
Normal file
33
Source/Core/Common/GL/GLUtil.h
Normal file
@ -0,0 +1,33 @@
|
||||
// Copyright 2008 Dolphin Emulator Project
|
||||
// Licensed under GPLv2+
|
||||
// Refer to the license.txt file included.
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "Common/MathUtil.h"
|
||||
#include "Common/GL/GLExtensions/GLExtensions.h"
|
||||
|
||||
#ifndef _WIN32
|
||||
|
||||
#include <sys/types.h>
|
||||
|
||||
#endif
|
||||
void InitInterface();
|
||||
|
||||
// Helpers
|
||||
GLuint OpenGL_CompileProgram(const char *vertexShader, const char *fragmentShader);
|
||||
|
||||
// Creates and deletes a VAO and VBO suitable for attributeless rendering.
|
||||
// Called by the Renderer.
|
||||
void OpenGL_CreateAttributelessVAO();
|
||||
void OpenGL_DeleteAttributelessVAO();
|
||||
|
||||
// Binds the VAO suitable for attributeless rendering.
|
||||
void OpenGL_BindAttributelessVAO();
|
||||
|
||||
// this should be removed in future, but as long as glsl is unstable, we should really read this messages
|
||||
#if defined(_DEBUG) || defined(DEBUGFAST)
|
||||
#define DEBUG_GLSL 1
|
||||
#else
|
||||
#define DEBUG_GLSL 0
|
||||
#endif
|
Reference in New Issue
Block a user