コード例 #1
0
ファイル: hal.ogl.Core.cpp プロジェクト: hlide/psce4all
__noinline void hal::ogl::Core::init_program_binary()
{
    program_binary = false;
    {
        GetProgramBinary                    = NULL;
        ProgramBinary                       = NULL;
        ProgramParameteri                   = NULL;
    }

    if (__GLEW_ARB_get_program_binary)
    {
        program_binary = true;

        LOAD_FUNC1(GetProgramBinary);
        LOAD_FUNC1(ProgramBinary);
        LOAD_FUNC1(ProgramParameteri);
    }
}
コード例 #2
0
ファイル: hal.ogl.Core.cpp プロジェクト: hlide/psce4all
__noinline void hal::ogl::Core::init_shader_image_load_store()
{
    shader_image_load_store = false;
    {
        BindImageTexture                    = NULL;
        MemoryBarrier                       = NULL;
    }

    if (__GLEW_ARB_shader_image_load_store)
    {
        shader_image_load_store = true;

        LOAD_FUNC1(BindImageTexture);
        LOAD_FUNC1(MemoryBarrier);
    }
    else if (__GLEW_EXT_shader_image_load_store)
    {
        shader_image_load_store = true;

        LOAD_FUNC2(BindImageTexture, glBindImageTextureEXT);
        LOAD_FUNC2(MemoryBarrier, glMemoryBarrierEXT);
    }
}
コード例 #3
0
		void wgl_features()
		{
#ifdef GLLOADER_WGL
			std::string exts_str;

			LOAD_FUNC1(wglGetExtensionsStringARB);
			if (wglGetExtensionsStringARB != NULL)
			{
				exts_str = wglGetExtensionsStringARB(::wglGetCurrentDC());
			}
			else
			{
				LOAD_FUNC1(wglGetExtensionsStringEXT);
				if (wglGetExtensionsStringEXT != NULL)
				{
					exts_str = wglGetExtensionsStringEXT();
				}
			}

			std::vector<std::string> wgl_exts = split(exts_str);
			wgl_exts.erase(std::remove(wgl_exts.begin(), wgl_exts.end(), ""), wgl_exts.end());
			features_.insert(features_.end(), wgl_exts.begin(), wgl_exts.end());
#endif		// GLLOADER_WGL
		}
コード例 #4
0
		void gl_features()
		{
			int major, minor;
			gl_version(major, minor);

			if (major > 0)
			{
				std::vector<std::string> gl_exts;
				if (major >= 3)
				{
					LOAD_FUNC1(glGetStringi);
					GLint num_exts;
					glGetIntegerv(GL_NUM_EXTENSIONS, &num_exts);
					gl_exts.resize(num_exts);
					for (GLint i = 0; i < num_exts; ++ i)
					{
						gl_exts[i] = reinterpret_cast<char const *>(glGetStringi(GL_EXTENSIONS, i));
					}
				}
				else
				{
					GLubyte const * str = glGetString(GL_EXTENSIONS);
					if (str != NULL)
					{
						gl_exts = split(reinterpret_cast<char const *>(str));
					}
				}

				gl_exts.erase(std::remove(gl_exts.begin(), gl_exts.end(), ""), gl_exts.end());
#ifdef GLLOADER_GLES
				for (std::vector<std::string>::iterator iter = gl_exts.begin(); iter != gl_exts.end(); ++ iter)
				{
					if (0 == iter->find("GL_"))
					{
						*iter = "GLES_" + iter->substr(3);
					}
				}
#endif
				features_.insert(features_.end(), gl_exts.begin(), gl_exts.end());

				int const ver_code = major * 10 + minor;
#ifndef GLLOADER_GLES
				if (ver_code >= 10)
				{
					features_.push_back("GL_VERSION_1_0");
				}
				if (ver_code >= 11)
				{
					features_.push_back("GL_VERSION_1_1");
				}
				if (ver_code >= 12)
				{
					features_.push_back("GL_VERSION_1_2");
				}
				if (ver_code >= 13)
				{
					features_.push_back("GL_VERSION_1_3");
				}
				if (ver_code >= 14)
				{
					features_.push_back("GL_VERSION_1_4");
				}
				if (ver_code >= 15)
				{
					features_.push_back("GL_VERSION_1_5");
				}
				if (ver_code >= 20)
				{
					features_.push_back("GL_VERSION_2_0");
				}
				if (ver_code >= 21)
				{
					features_.push_back("GL_VERSION_2_1");
				}
				if (ver_code >= 30)
				{
					features_.push_back("GL_VERSION_3_0");
				}
				if (ver_code >= 31)
				{
					features_.push_back("GL_VERSION_3_1");
				}
				if (ver_code >= 32)
				{
					features_.push_back("GL_VERSION_3_2");
				}
				if (ver_code >= 33)
				{
					features_.push_back("GL_VERSION_3_3");
				}
				if (ver_code >= 40)
				{
					features_.push_back("GL_VERSION_4_0");
				}
				if (ver_code >= 41)
				{
					features_.push_back("GL_VERSION_4_1");
				}
				if (ver_code >= 42)
				{
					features_.push_back("GL_VERSION_4_2");
				}
				if (ver_code >= 43)
				{
					features_.push_back("GL_VERSION_4_3");
				}
				if (ver_code >= 44)
				{
					features_.push_back("GL_VERSION_4_4");
				}
#else
				if (ver_code >= 10)
				{
					features_.push_back("GLES_VERSION_1_0");
				}
				if (ver_code >= 11)
				{
					features_.push_back("GLES_VERSION_1_1");
				}
				if (ver_code >= 20)
				{
					features_.push_back("GLES_VERSION_2_0");
				}
				if (ver_code >= 30)
				{
					features_.push_back("GLES_VERSION_3_0");
				}
#endif
			}
		}
コード例 #5
0
ファイル: hal.ogl.Core.cpp プロジェクト: hlide/psce4all
__noinline void hal::ogl::Core::init_framebuffer_object()
{
    framebuffer_object = false;
    {
        IsRenderbuffer                      = NULL;
        BindRenderbuffer                    = NULL;
        DeleteRenderbuffers                 = NULL;
        GenRenderbuffers                    = NULL;
        RenderbufferStorage                 = NULL;
        RenderbufferStorageMultisample      = NULL;
        GetRenderbufferParameteriv          = NULL;
        IsFramebuffer                       = NULL;
        BindFramebuffer                     = NULL;
        DeleteFramebuffers                  = NULL;
        GenFramebuffers                     = NULL;
        CheckFramebufferStatus              = NULL;
        FramebufferTexture1D                = NULL;
        FramebufferTexture2D                = NULL;
        FramebufferTexture3D                = NULL;
        FramebufferTextureLayer             = NULL;
        FramebufferRenderbuffer             = NULL;
        GetFramebufferAttachmentParameteriv = NULL;
        BlitFramebuffer                     = NULL;
        GenerateMipmap                      = NULL;
    }

    if (__GLEW_ARB_framebuffer_object)
    {
        framebuffer_object = true;

        LOAD_FUNC1(IsRenderbuffer);
        LOAD_FUNC1(BindRenderbuffer);
        LOAD_FUNC1(DeleteRenderbuffers);
        LOAD_FUNC1(GenRenderbuffers);
        LOAD_FUNC1(RenderbufferStorage);
        LOAD_FUNC1(RenderbufferStorageMultisample);
        LOAD_FUNC1(GetRenderbufferParameteriv);
        LOAD_FUNC1(IsFramebuffer);
        LOAD_FUNC1(BindFramebuffer);
        LOAD_FUNC1(DeleteFramebuffers);
        LOAD_FUNC1(GenFramebuffers);
        LOAD_FUNC1(CheckFramebufferStatus);
        LOAD_FUNC1(FramebufferTexture1D);
        LOAD_FUNC1(FramebufferTexture2D);
        LOAD_FUNC1(FramebufferTexture3D);
        LOAD_FUNC1(FramebufferTextureLayer);
        LOAD_FUNC1(FramebufferRenderbuffer);
        LOAD_FUNC1(GetFramebufferAttachmentParameteriv);
        LOAD_FUNC1(BlitFramebuffer);
        LOAD_FUNC1(GenerateMipmap);
    }
    else
    {
        int extensions = 0;

        if (__GLEW_EXT_framebuffer_object)
        {
            extensions++;

            LOAD_FUNC2(IsRenderbuffer, glIsRenderbufferEXT);
            LOAD_FUNC2(BindRenderbuffer, glBindRenderbufferEXT);
            LOAD_FUNC2(DeleteRenderbuffers, glDeleteRenderbuffersEXT);
            LOAD_FUNC2(GenRenderbuffers, glGenRenderbuffersEXT);
            LOAD_FUNC2(RenderbufferStorage, glRenderbufferStorageEXT);
            LOAD_FUNC2(GetRenderbufferParameteriv, glGetRenderbufferParameterivEXT);
            LOAD_FUNC2(IsFramebuffer, glIsFramebufferEXT);
            LOAD_FUNC2(BindFramebuffer, glBindFramebufferEXT);
            LOAD_FUNC2(DeleteFramebuffers, glDeleteFramebuffersEXT);
            LOAD_FUNC2(GenFramebuffers, glGenFramebuffersEXT);
            LOAD_FUNC2(CheckFramebufferStatus, glCheckFramebufferStatusEXT);
            LOAD_FUNC2(FramebufferTexture1D, glFramebufferTexture1DEXT);
            LOAD_FUNC2(FramebufferTexture2D, glFramebufferTexture2DEXT);
            LOAD_FUNC2(FramebufferTexture3D, glFramebufferTexture3DEXT);
            LOAD_FUNC2(FramebufferRenderbuffer, glFramebufferRenderbufferEXT);
            LOAD_FUNC2(GetFramebufferAttachmentParameteriv, glGetFramebufferAttachmentParameterivEXT);
            LOAD_FUNC2(GenerateMipmap, glGenerateMipmapEXT);
        }
        if (__GLEW_EXT_framebuffer_multisample)
        {
            extensions++;

            LOAD_FUNC2(RenderbufferStorageMultisample, glRenderbufferStorageMultisampleEXT);
        }
        if (__GLEW_ARB_geometry_shader4)
        {
            extensions++;

            LOAD_FUNC2(FramebufferTextureLayer, glFramebufferTextureLayerARB);
        }
        else if (__GLEW_EXT_geometry_shader4)
        {
            extensions++;

            LOAD_FUNC2(FramebufferTextureLayer, glFramebufferTextureLayerEXT);
        }
        if (__GLEW_EXT_framebuffer_blit)
        {
            extensions++;

            LOAD_FUNC2(BlitFramebuffer, glBlitFramebufferEXT);
        }

        framebuffer_object = (extensions == 5);
    }
}
コード例 #6
0
ファイル: hal.ogl.Core.cpp プロジェクト: hlide/psce4all
__noinline void hal::ogl::Core::init_transform_feedback()
{
    transform_feedback = false;
    {
        BindTransformFeedback               = NULL;
        DeleteTransformFeedbacks            = NULL;
        DrawTransformFeedback               = NULL;
        GenTransformFeedbacks               = NULL;
        IsTransformFeedback                 = NULL;
        PauseTransformFeedback              = NULL;
        ResumeTransformFeedback             = NULL;
        BeginQueryIndexed                   = NULL;
        DrawTransformFeedbackStream         = NULL;
        EndQueryIndexed                     = NULL;
        GetQueryIndexediv                   = NULL;
    }

    if (__GLEW_ARB_transform_feedback2)
    {
        LOAD_FUNC1(BindTransformFeedback);
        LOAD_FUNC1(DeleteTransformFeedbacks);
        LOAD_FUNC1(DrawTransformFeedback);
        LOAD_FUNC1(GenTransformFeedbacks);
        LOAD_FUNC1(IsTransformFeedback);
        LOAD_FUNC1(PauseTransformFeedback);
        LOAD_FUNC1(ResumeTransformFeedback);

        if (__GLEW_ARB_transform_feedback3)
        {
            transform_feedback = true;

            LOAD_FUNC1(BeginQueryIndexed);
            LOAD_FUNC1(DrawTransformFeedbackStream);
            LOAD_FUNC1(EndQueryIndexed);
            LOAD_FUNC1(GetQueryIndexediv);
        }
    }
}
コード例 #7
0
ファイル: hal.ogl.Core.cpp プロジェクト: hlide/psce4all
__noinline void hal::ogl::Core::init_sampler_objects()
{
    sampler_objects = false;
    {
        BindSampler                         = NULL;
        DeleteSamplers                      = NULL;
        GenSamplers                         = NULL;
        GetSamplerParameterIiv              = NULL;
        GetSamplerParameterIuiv             = NULL;
        GetSamplerParameterfv               = NULL;
        GetSamplerParameteriv               = NULL;
        IsSampler                           = NULL;
        SamplerParameterIiv                 = NULL;
        SamplerParameterIuiv                = NULL;
        SamplerParameterf                   = NULL;
        SamplerParameterfv                  = NULL;
        SamplerParameteri                   = NULL;
        SamplerParameteriv                  = NULL;
    }

    if (__GLEW_ARB_sampler_objects)
    {
        sampler_objects = true;

        LOAD_FUNC1(BindSampler);
        LOAD_FUNC1(DeleteSamplers);
        LOAD_FUNC1(GenSamplers);
        LOAD_FUNC1(GetSamplerParameterIiv);
        LOAD_FUNC1(GetSamplerParameterIuiv);
        LOAD_FUNC1(GetSamplerParameterfv);
        LOAD_FUNC1(GetSamplerParameteriv);
        LOAD_FUNC1(IsSampler);
        LOAD_FUNC1(SamplerParameterIiv);
        LOAD_FUNC1(SamplerParameterIuiv);
        LOAD_FUNC1(SamplerParameterf);
        LOAD_FUNC1(SamplerParameterfv);
        LOAD_FUNC1(SamplerParameteri);
        LOAD_FUNC1(SamplerParameteriv);
    }
}