static void CheckForShaders(NSOpenGLPixelFormatAttribute *thePixelAttributes)
{
	const GLubyte *extensions = glGetString(GL_EXTENSIONS);
	
	GLboolean  bShaderObjectAvailable      = CheckForExtension("GL_ARB_shader_objects", extensions);
	GLboolean  bShaderLanguage100Available = CheckForExtension("GL_ARB_shading_language_100", extensions);
	GLboolean  bVertexShaderAvailable      = CheckForExtension("GL_ARB_vertex_shader", extensions);
	GLboolean  bFragmentShaderAvailable    = CheckForExtension("GL_ARB_fragment_shader", extensions);
	
	GLboolean  bForceSoftwareRendering =	(bShaderObjectAvailable == GL_FALSE)
	||	(bShaderLanguage100Available == GL_FALSE)
	||	(bVertexShaderAvailable == GL_FALSE) 
	||	(bFragmentShaderAvailable == GL_FALSE);
	
	if( bForceSoftwareRendering )
	{
		// Force software rendering, so fragment shaders will execute
		
		CheckForAndLogExtensionAvailable(bShaderObjectAvailable, "GL_ARB_shader_objects");
		CheckForAndLogExtensionAvailable(bShaderLanguage100Available, "GL_ARB_shading_language_100");
		CheckForAndLogExtensionAvailable(bVertexShaderAvailable, "GL_ARB_vertex_shader");
		CheckForAndLogExtensionAvailable(bFragmentShaderAvailable, "GL_ARB_fragment_shader");
		
		thePixelAttributes [3] = NSOpenGLPFARendererID;
		thePixelAttributes [4] = kCGLRendererGenericFloatID;
	} // if
} // CheckForShaders
예제 #2
0
파일: main.c 프로젝트: alown/chromium
int
main(int argc, char *argv[])
{
	glutInit(&argc, argv);

	printf("Written by Christopher Niederauer\n");
	printf("[email protected]\n");

	InitGL();
	InitSpecial();

#ifdef CCN_DEBUG
	printf("    Vendor: %s\n", glGetString(GL_VENDOR));
	printf("  Renderer: %s\n", glGetString(GL_RENDERER));
	printf("   Version: %s\n", glGetString(GL_VERSION));
	printf("Extensions: %s\n", glGetString(GL_EXTENSIONS));
#endif

	if (CheckForExtension(TEST_EXTENSION_STRING))
	{
		printf("Extension %s supported.  Executing...\n", TEST_EXTENSION_STRING);
	}
	else
	{
		printf("Error: %s not supported.  Exiting.\n", TEST_EXTENSION_STRING);
		return 0;
	}

	glutMainLoop();

	return 0;
}
static void CheckForClipVolumeHint(NSOpenGLPixelFormatAttribute *thePixelAttributes)
{
	const GLubyte *extensions = glGetString(GL_EXTENSIONS);
	
	// Inform OpenGL that the geometry is entirely within the 
	// view volume and that view-volume clipping is unnecessary. 
	// Normal clipping can be resumed by setting this hint to 
	// GL_DONT_CARE.  When clipping is disabled with this hint, 
	// results are undefined if geometry actually falls outside 
	//the view volume.
	
	GLboolean  bClipVolumeHintExtAvailable = CheckForExtension("GL_EXT_clip_volume_hint", 
															   extensions);
	
	if(   bClipVolumeHintExtAvailable == GL_TRUE)
	{
		glHint(GL_CLIP_VOLUME_CLIPPING_HINT_EXT,GL_FASTEST);
	} // if
} // CheckForClipVolumeHint