[msvc] Fix yg compilation issues.

This commit is contained in:
vng 2011-11-28 17:29:54 +03:00 committed by Alex Zolotarev
parent 916d5010bd
commit a76c8d8d09
7 changed files with 97 additions and 89 deletions

View file

@ -89,7 +89,7 @@ namespace yg
/// orphaning the old copy of the buffer data.
/// this provides that the glMapBuffer will not wait.
OGLCHECK(glBufferData(GL_ELEMENT_ARRAY_BUFFER, m_size, 0, GL_DYNAMIC_DRAW));
OGLCHECK(glBufferDataFn(GL_ELEMENT_ARRAY_BUFFER, m_size, 0, GL_DYNAMIC_DRAW));
m_gpuData = glMapBufferFn(GL_ELEMENT_ARRAY_BUFFER, GL_WRITE_ONLY_MWM);

View file

@ -2,26 +2,26 @@
// buffer objects extensions
DEFINE_GL_PROC(PFNGLBINDBUFFERPROC, "glBindBufferFn", glBindBufferFn)
DEFINE_GL_PROC(PFNGLGENBUFFERSPROC, "glGenBuffers", glGenBuffersFn)
DEFINE_GL_PROC(PFNGLBUFFERDATAPROC, "glBufferData", glBufferDataFn)
DEFINE_GL_PROC(PFNGLBUFFERSUBDATAPROC, "glBufferSubData", glBufferSubDataFn)
DEFINE_GL_PROC(PFNGLDELETEBUFFERSPROC, "glDeleteBuffers", glDeleteBuffersFn)
DEFINE_GL_PROC(PFNGLMAPBUFFERPROC, "glMapBuffer", glMapBufferFn)
DEFINE_GL_PROC(PFNGLUNMAPBUFFERPROC, "glUnmapBuffer", glUnmapBufferFn)
DEFINE_GL_PROC("glBindBufferFn", glBindBufferFn)
DEFINE_GL_PROC("glGenBuffers", glGenBuffersFn)
DEFINE_GL_PROC("glBufferData", glBufferDataFn)
DEFINE_GL_PROC("glBufferSubData", glBufferSubDataFn)
DEFINE_GL_PROC("glDeleteBuffers", glDeleteBuffersFn)
DEFINE_GL_PROC("glMapBuffer", glMapBufferFn)
DEFINE_GL_PROC("glUnmapBuffer", glUnmapBufferFn)
// framebuffers extensions
DEFINE_GL_PROC(PFNGLBINDFRAMEBUFFERPROC, "glBindFramebuffer", glBindFramebufferFn)
DEFINE_GL_PROC(PFNGLFRAMEBUFFERTEXTURE2DPROC, "glFramebufferTexture2D", glFramebufferTexture2DFn)
DEFINE_GL_PROC(PFNGLFRAMEBUFFERRENDERBUFFERPROC, "glFramebufferRenderbuffer", glFramebufferRenderbufferFn)
DEFINE_GL_PROC(PFNGLGENFRAMEBUFFERSPROC, "glGenFramebuffers", glGenFramebuffersFn)
DEFINE_GL_PROC(PFNGLDELETEFRAMEBUFFERSPROC, "glDeleteFramebuffers", glDeleteFramebuffersFn)
DEFINE_GL_PROC(PFNGLCHECKFRAMEBUFFERSTATUSEXTPROC, "glCheckFramebufferStatus", glCheckFramebufferStatusFn)
DEFINE_GL_PROC("glBindFramebuffer", glBindFramebufferFn)
DEFINE_GL_PROC("glFramebufferTexture2D", glFramebufferTexture2DFn)
DEFINE_GL_PROC("glFramebufferRenderbuffer", glFramebufferRenderbufferFn)
DEFINE_GL_PROC("glGenFramebuffers", glGenFramebuffersFn)
DEFINE_GL_PROC("glDeleteFramebuffers", glDeleteFramebuffersFn)
DEFINE_GL_PROC("glCheckFramebufferStatus", glCheckFramebufferStatusFn)
// renderbuffer extensions
DEFINE_GL_PROC(PFNGLGENRENDERBUFFERSPROC, "glGenRenderbuffers", glGenRenderbuffersFn)
DEFINE_GL_PROC(PFNGLDELETERENDERBUFFERSEXTPROC, "glDeleteRenderbuffers", glDeleteRenderbuffersFn)
DEFINE_GL_PROC(PFNGLBINDRENDERBUFFEREXTPROC, "glBindRenderbuffer", glBindRenderbufferFn)
DEFINE_GL_PROC(PFNGLRENDERBUFFERSTORAGEEXTPROC, "glRenderbufferStorage", glRenderbufferStorageFn)
DEFINE_GL_PROC("glGenRenderbuffers", glGenRenderbuffersFn)
DEFINE_GL_PROC("glDeleteRenderbuffers", glDeleteRenderbuffersFn)
DEFINE_GL_PROC("glBindRenderbuffer", glBindRenderbufferFn)
DEFINE_GL_PROC("glRenderbufferStorage", glRenderbufferStorageFn)

View file

@ -2,16 +2,36 @@
#include "../../base/logging.hpp"
#include "../../base/string_utils.hpp"
#include "../../std/bind.hpp"
#ifdef OMIM_OS_BADA
#include <FBaseSys.h>
#endif
namespace yg
{
namespace gl
{
const int GL_FRAMEBUFFER_BINDING_MWM = GL_FRAMEBUFFER_BINDING_EXT;
const int GL_FRAMEBUFFER_MWM = GL_FRAMEBUFFER_EXT;
const int GL_FRAMEBUFFER_UNSUPPORTED_MWM = GL_FRAMEBUFFER_UNSUPPORTED_EXT;
const int GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_MWM = GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT;
const int GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_MWM = GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT;
const int GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_MWM = GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT;
const int GL_FRAMEBUFFER_COMPLETE_MWM = GL_FRAMEBUFFER_COMPLETE_EXT;
const int GL_DEPTH_ATTACHMENT_MWM = GL_DEPTH_ATTACHMENT_EXT;
const int GL_COLOR_ATTACHMENT0_MWM = GL_COLOR_ATTACHMENT0_EXT;
const int GL_RENDERBUFFER_MWM = GL_RENDERBUFFER_EXT;
const int GL_RENDERBUFFER_BINDING_MWM = GL_RENDERBUFFER_BINDING_EXT;
const int GL_DEPTH_COMPONENT16_MWM = GL_DEPTH_COMPONENT16;
const int GL_DEPTH_COMPONENT24_MWM = GL_DEPTH_COMPONENT24;
const int GL_RGBA8_MWM = GL_RGBA8;
const int GL_WRITE_ONLY_MWM = GL_WRITE_ONLY;
platform_unsupported::platform_unsupported(char const * reason)
: m_reason(reason)
{}
@ -57,25 +77,25 @@ namespace yg
bool g_isFramebufferSupported = true;
bool g_isRenderbufferSupported = true;
void (* glBindBufferFn) (GLenum target, GLuint buffer);
void (* glGenBuffersFn) (GLsizei n, GLuint *buffers);
void (* glBufferDataFn) (GLenum target, long size, const GLvoid *data, GLenum usage);
void (* glBufferSubDataFn) (GLenum target, long offset, long size, const GLvoid *data);
void (* glDeleteBuffersFn) (GLsizei n, const GLuint *buffers);
void* (* glMapBufferFn) (GLenum target, GLenum access);
GLboolean (* glUnmapBufferFn) (GLenum target);
void (OPENGL_CALLING_CONVENTION * glBindBufferFn) (GLenum target, GLuint buffer);
void (OPENGL_CALLING_CONVENTION * glGenBuffersFn) (GLsizei n, GLuint *buffers);
void (OPENGL_CALLING_CONVENTION * glBufferDataFn) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage);
void (OPENGL_CALLING_CONVENTION * glBufferSubDataFn) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data);
void (OPENGL_CALLING_CONVENTION * glDeleteBuffersFn) (GLsizei n, const GLuint *buffers);
void * (OPENGL_CALLING_CONVENTION * glMapBufferFn) (GLenum target, GLenum access);
GLboolean (OPENGL_CALLING_CONVENTION * glUnmapBufferFn) (GLenum target);
void (* glBindFramebufferFn) (GLenum target, GLuint framebuffer);
void (* glFramebufferTexture2DFn) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
void (* glFramebufferRenderbufferFn) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
void (* glGenFramebuffersFn) (GLsizei n, GLuint *framebuffers);
void (* glDeleteFramebuffersFn) (GLsizei n, const GLuint *framebuffers);
GLenum (* glCheckFramebufferStatusFn) (GLenum target);
void (OPENGL_CALLING_CONVENTION * glBindFramebufferFn) (GLenum target, GLuint framebuffer);
void (OPENGL_CALLING_CONVENTION * glFramebufferTexture2DFn) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
void (OPENGL_CALLING_CONVENTION * glFramebufferRenderbufferFn) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
void (OPENGL_CALLING_CONVENTION * glGenFramebuffersFn) (GLsizei n, GLuint *framebuffers);
void (OPENGL_CALLING_CONVENTION * glDeleteFramebuffersFn) (GLsizei n, const GLuint *framebuffers);
GLenum (OPENGL_CALLING_CONVENTION * glCheckFramebufferStatusFn) (GLenum target);
void (* glGenRenderbuffersFn) (GLsizei n, GLuint *renderbuffers);
void (* glDeleteRenderbuffersFn) (GLsizei n, const GLuint *renderbuffers);
void (* glBindRenderbufferFn) (GLenum target, GLuint renderbuffer);
void (* glRenderbufferStorageFn) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
void (OPENGL_CALLING_CONVENTION * glGenRenderbuffersFn) (GLsizei n, GLuint *renderbuffers);
void (OPENGL_CALLING_CONVENTION * glDeleteRenderbuffersFn) (GLsizei n, const GLuint *renderbuffers);
void (OPENGL_CALLING_CONVENTION * glBindRenderbufferFn) (GLenum target, GLuint renderbuffer);
void (OPENGL_CALLING_CONVENTION * glRenderbufferStorageFn) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
bool g_doDeleteOnDestroy = true;

View file

@ -2,9 +2,10 @@
#include "../../std/target_os.hpp"
#if defined(OMIM_OS_WINDOWS)
#include "../../std/windows.hpp"
#include <gl/gl.h>
#define GL_GLEXT_PROTOTYPES
#include "../../3party/GL/glext.h"
#elif defined(OMIM_OS_BADA)
#include <FGraphicsOpengl.h>
@ -20,6 +21,7 @@
#define OMIM_GL_ES
#else
#include <OpenGL/gl.h>
#include <OpenGL/glext.h>
#endif
#elif defined(OMIM_OS_ANDROID)
@ -32,9 +34,18 @@
#include <GL/glext.h>
#endif
#ifdef OMIM_OS_WINDOWS
#define OPENGL_CALLING_CONVENTION __stdcall
#else
#define OPENGL_CALLING_CONVENTION
#endif
#include "../../base/src_point.hpp"
#include "../../std/exception.hpp"
namespace yg
{
namespace gl
@ -47,13 +58,13 @@ namespace yg
extern const int GL_WRITE_ONLY_MWM;
extern void (* glBindBufferFn) (GLenum target, GLuint buffer);
extern void (* glGenBuffersFn) (GLsizei n, GLuint *buffers);
extern void (* glBufferDataFn) (GLenum target, long size, const GLvoid *data, GLenum usage);
extern void (* glBufferSubDataFn) (GLenum target, long offset, long size, const GLvoid *data);
extern void (* glDeleteBuffersFn) (GLsizei n, const GLuint *buffers);
extern void* (* glMapBufferFn) (GLenum target, GLenum access);
extern GLboolean (* glUnmapBufferFn) (GLenum target);
extern void (OPENGL_CALLING_CONVENTION * glBindBufferFn) (GLenum target, GLuint buffer);
extern void (OPENGL_CALLING_CONVENTION * glGenBuffersFn) (GLsizei n, GLuint *buffers);
extern void (OPENGL_CALLING_CONVENTION * glBufferDataFn) (GLenum target, GLsizeiptr size, const GLvoid *data, GLenum usage);
extern void (OPENGL_CALLING_CONVENTION * glBufferSubDataFn) (GLenum target, GLintptr offset, GLsizeiptr size, const GLvoid *data);
extern void (OPENGL_CALLING_CONVENTION * glDeleteBuffersFn) (GLsizei n, const GLuint *buffers);
extern void * (OPENGL_CALLING_CONVENTION * glMapBufferFn) (GLenum target, GLenum access);
extern GLboolean (OPENGL_CALLING_CONVENTION * glUnmapBufferFn) (GLenum target);
// framebuffers extensions
@ -72,20 +83,20 @@ namespace yg
extern const int GL_DEPTH_COMPONENT24_MWM;
extern const int GL_RGBA8_MWM;
extern void (* glBindFramebufferFn) (GLenum target, GLuint framebuffer);
extern void (* glFramebufferTexture2DFn) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
extern void (* glFramebufferRenderbufferFn) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
extern void (* glGenFramebuffersFn) (GLsizei n, GLuint *framebuffers);
extern void (* glDeleteFramebuffersFn) (GLsizei n, const GLuint *framebuffers);
extern GLenum (* glCheckFramebufferStatusFn) (GLenum target);
extern void (OPENGL_CALLING_CONVENTION * glBindFramebufferFn) (GLenum target, GLuint framebuffer);
extern void (OPENGL_CALLING_CONVENTION * glFramebufferTexture2DFn) (GLenum target, GLenum attachment, GLenum textarget, GLuint texture, GLint level);
extern void (OPENGL_CALLING_CONVENTION * glFramebufferRenderbufferFn) (GLenum target, GLenum attachment, GLenum renderbuffertarget, GLuint renderbuffer);
extern void (OPENGL_CALLING_CONVENTION * glGenFramebuffersFn) (GLsizei n, GLuint *framebuffers);
extern void (OPENGL_CALLING_CONVENTION * glDeleteFramebuffersFn) (GLsizei n, const GLuint *framebuffers);
extern GLenum (OPENGL_CALLING_CONVENTION * glCheckFramebufferStatusFn) (GLenum target);
// renderbuffer extensions
extern void (* glGenRenderbuffersFn) (GLsizei n, GLuint *renderbuffers);
extern void (* glDeleteRenderbuffersFn) (GLsizei n, const GLuint *renderbuffers);
extern void (* glBindRenderbufferFn) (GLenum target, GLuint renderbuffer);
extern void (* glRenderbufferStorageFn) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
extern void (OPENGL_CALLING_CONVENTION * glGenRenderbuffersFn) (GLsizei n, GLuint *renderbuffers);
extern void (OPENGL_CALLING_CONVENTION * glDeleteRenderbuffersFn) (GLsizei n, const GLuint *renderbuffers);
extern void (OPENGL_CALLING_CONVENTION * glBindRenderbufferFn) (GLenum target, GLuint renderbuffer);
extern void (OPENGL_CALLING_CONVENTION * glRenderbufferStorageFn) (GLenum target, GLenum internalformat, GLsizei width, GLsizei height);
/// This flag controls, whether OpenGL resources should delete themselves upon destruction.
/// Sounds odd, but in EGL there are cases when the only function one should call to finish

View file

@ -1,32 +1,10 @@
#include "opengl.hpp"
#ifdef OMIM_OS_MAC
#include <TargetConditionals.h>
#include <OpenGL/glext.h>
#endif
namespace yg
{
namespace gl
{
const int GL_FRAMEBUFFER_BINDING_MWM = GL_FRAMEBUFFER_BINDING_EXT;
const int GL_FRAMEBUFFER_MWM = GL_FRAMEBUFFER_EXT;
const int GL_FRAMEBUFFER_UNSUPPORTED_MWM = GL_FRAMEBUFFER_UNSUPPORTED_EXT;
const int GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_MWM = GL_FRAMEBUFFER_INCOMPLETE_ATTACHMENT_EXT;
const int GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_MWM = GL_FRAMEBUFFER_INCOMPLETE_MISSING_ATTACHMENT_EXT;
const int GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_MWM = GL_FRAMEBUFFER_INCOMPLETE_DIMENSIONS_EXT;
const int GL_FRAMEBUFFER_COMPLETE_MWM = GL_FRAMEBUFFER_COMPLETE_EXT;
const int GL_DEPTH_ATTACHMENT_MWM = GL_DEPTH_ATTACHMENT_EXT;
const int GL_COLOR_ATTACHMENT0_MWM = GL_COLOR_ATTACHMENT0_EXT;
const int GL_RENDERBUFFER_MWM = GL_RENDERBUFFER_EXT;
const int GL_RENDERBUFFER_BINDING_MWM = GL_RENDERBUFFER_BINDING_EXT;
const int GL_DEPTH_COMPONENT16_MWM = GL_DEPTH_COMPONENT16;
const int GL_DEPTH_COMPONENT24_MWM = GL_DEPTH_COMPONENT24;
const int GL_RGBA8_MWM = GL_RGBA8;
const int GL_WRITE_ONLY_MWM = GL_WRITE_ONLY;
void InitExtensions()
{
DumpGLInformation();

View file

@ -1,17 +1,18 @@
#include "opengl.hpp"
#include "../../3party/GL/glext.h"
//#include "../../3party/GL/glext.h"
#include "../../base/logging.hpp"
namespace yg
{
namespace gl
{
GL_FRAMEBUFFER_BINDING = GL_FRAMEBUFFER_BINDING_EXT;
//GL_FRAMEBUFFER_BINDING = GL_FRAMEBUFFER_BINDING_EXT;
template <class TRet>
TRet GetGLProc(HMODULE, char const * name)
template <class T>
void AssignGLProc(HMODULE, char const * name, T & res)
{
PROC p = ::wglGetProcAddress(name);
if (p == 0)
@ -19,7 +20,7 @@ namespace yg
DWORD const err = ::GetLastError();
LOG(LINFO, ("OpenGL extension function ", name, " not found. Last error = ", err));
}
return reinterpret_cast<TRet>(p);
res = reinterpret_cast<T>(p);
}
void InitExtensions()
@ -28,12 +29,12 @@ namespace yg
// Loading procedures, trying "EXT" suffix if alias doesn't exist
#define DEFINE_GL_PROC_WIN32(type, name, fn) \
fn = GetGLProc<type>(hInst, name); \
if (fn == NULL)
{
string extName = string(name) + "EXT";
fn = GetGLProc<type>(hInst, extName);
#define DEFINE_GL_PROC(name, fn) \
AssignGLProc(hInst, name, fn); \
if (fn == NULL) \
{ \
string const extName = string(name) + "EXT"; \
AssignGLProc(hInst, extName.c_str(), fn); \
}
#include "gl_procedures.inl"
#undef DEFINE_GL_PROC
@ -60,5 +61,3 @@ namespace yg
}
}
} // namespace win32
#endif

View file

@ -111,7 +111,7 @@ namespace yg
shared_ptr<UpdateActualTarget> command(new UpdateActualTarget());
command->m_renderState = m_renderState;
command->m_currentScreen = m_renderState->m_currentScreen;
command->m_doSynchronize = renderQueue();
command->m_doSynchronize = (renderQueue() != 0);
processCommand(command);