#include <cstdlib>
#if defined(__ANDROID__)
#include <EGL/egl.h>
-#elif !defined(_WIN32) && !defined(__APPLE__)
+#elif defined(_WIN32)
+#include <windows.h>
+#elif !defined(__APPLE__)
#define GLX_GLXEXT_PROTOTYPES
#include <GL/glx.h>
#endif
#include "extension.h"
#include "gl.h"
+#ifndef GL_VERSION_3_0
+#define GL_NUM_EXTENSIONS 0x821D
+#endif
+
+#ifndef GL_VERSION_3_2
+#define GL_CONTEXT_CORE_PROFILE_BIT 0x00000001
+#define GL_CONTEXT_PROFILE_MASK 0x9126
+#endif
+
using namespace std;
namespace Msp {
bool is_supported(const string &ext)
{
+ if(is_disabled(ext))
+ return false;
+
static set<string> extensions;
static bool init_done = false;
string renderer = renderer_ptr;
if(renderer.find("Radeon")!=string::npos || renderer.find("AMD")!=string::npos)
{
- /* Radeon doesn't process NV_primitive_restart correctly and treats
- the restart index as a normal element if the indices are stored in a
- buffer. */
- disabled_exts.insert("GL_NV_primitive_restart");
+ // The core primitive restart feature does not work either.
+ disabled_exts.insert("GL_MSP_primitive_restart");
/* AMD's uniform buffer objects only work with the core version of
shaders. */
if(const char *force_ver_ptr = getenv("MSPGL_FORCE_VERSION"))
{
Version force_ver(force_ver_ptr);
- if(!(force_ver>=ver))
+ if(force_ver<ver)
ver = force_ver;
}
if(const char *force_ver_ptr = getenv("MSPGL_FORCE_GLSL_VERSION"))
{
Version force_ver(force_ver_ptr);
- if(!(force_ver>=ver))
+ if(force_ver<ver)
ver = force_ver;
}
ExtFunc *get_proc_address(const string &name)
{
-#if defined(WIN32)
+#if defined(_WIN32)
return reinterpret_cast<ExtFunc *>(wglGetProcAddress(name.c_str()));
#elif defined(__APPLE__)
(void)name;