bool do_query_gl(void)
{
	if(!does_have_ARB_gpu_shader_fp64())
	{
		return false;
	}

	unsigned missing_gl_symbols = 0;

	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glUniform1d);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glUniform2d);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glUniform3d);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glUniform4d);

	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glUniform1dv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glUniform2dv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glUniform3dv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glUniform4dv);

	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glUniformMatrix2dv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glUniformMatrix2x3dv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glUniformMatrix2x4dv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glUniformMatrix3x2dv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glUniformMatrix3dv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glUniformMatrix3x4dv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glUniformMatrix4x2dv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glUniformMatrix4x3dv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glUniformMatrix4dv);

#if GL_EXT_direct_state_access
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform1dEXT);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform2dEXT);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform3dEXT);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform4dEXT);

	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform1dvEXT);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform2dvEXT);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform3dvEXT);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform4dvEXT);

	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniformMatrix2dvEXT);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniformMatrix2x3dvEXT);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniformMatrix2x4dvEXT);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniformMatrix3x2dvEXT);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniformMatrix3dvEXT);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniformMatrix3x4dvEXT);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniformMatrix4x2dvEXT);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniformMatrix4x3dvEXT);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniformMatrix4dvEXT);
#endif

	return missing_gl_symbols == 0;
}
bool do_query_gl(void)
{
	if(!does_have_ARB_separate_shader_objects())
	{
		return false;
	}

	unsigned missing_gl_symbols = 0;

	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform1i);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform2i);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform3i);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform4i);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform1ui);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform2ui);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform3ui);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform4ui);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform1f);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform2f);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform3f);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform4f);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform1d);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform2d);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform3d);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform4d);

	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform1iv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform2iv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform3iv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform4iv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform1uiv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform2uiv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform3uiv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform4uiv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform1fv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform2fv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform3fv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform4fv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform1dv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform2dv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform3dv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniform4dv);

	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniformMatrix2fv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniformMatrix2x3fv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniformMatrix2x4fv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniformMatrix3x2fv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniformMatrix3fv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniformMatrix3x4fv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniformMatrix4x2fv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniformMatrix4x3fv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniformMatrix4fv);

	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniformMatrix2dv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniformMatrix2x3dv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniformMatrix2x4dv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniformMatrix3x2dv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniformMatrix3dv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniformMatrix3x4dv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniformMatrix4x2dv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniformMatrix4x3dv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramUniformMatrix4dv);

	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glUseProgramStages);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glActiveShaderProgram);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glCreateShaderProgramv);

	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glGenProgramPipelines);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glDeleteProgramPipelines);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glIsProgramPipeline);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glBindProgramPipeline);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glProgramParameteri);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glGetProgramPipelineiv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glGetProgramPipelineInfoLog);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glValidateProgramPipeline);

	return missing_gl_symbols == 0;
}
예제 #3
0
bool do_query_gl(void)
{
	if(!does_have_ARB_compatibility())
	{
		return false;
	}

	unsigned missing_gl_symbols = 0;

	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glBegin);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glEnd);

	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glVertex2s);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glVertex3s);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glVertex4s);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glVertex2sv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glVertex3sv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glVertex4sv);

	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glVertex2i);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glVertex3i);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glVertex4i);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glVertex2iv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glVertex3iv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glVertex4iv);

	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glVertex2f);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glVertex3f);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glVertex4f);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glVertex2fv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glVertex3fv);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glVertex4fv);

	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glMatrixMode);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glPushMatrix);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glPopMatrix);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glLoadMatrixf);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glLoadMatrixd);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glTranslatef);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glTranslated);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glRotatef);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glRotated);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glScalef);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glScaled);

	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glEnableClientState);
	OGLPLUS_CONFIG_ASSERT_GL_FUNC(glDisableClientState);
	// TODO:

	return missing_gl_symbols == 0;
}