ForceWare 181.00: Five New OpenGL Extensions and How To Create an OpenGL 3.0 Rendering Context



NVIDIA ForceWare Graphics Drivers

OpenGL 3.0


In order to do some tests for the upcomming version of FurMark, I took the time to install the new ForceWare 181.00 with a GeForce 8800 GTX under Windows XP SP2 32-bit. In comparison to ForceWare 180.42, this new set of graphics drivers for GeForce 6/78/9/GTX200 adds 5 new extensions:

The new thing is that WGL_ARB_create_context function is now directly exposed. This function allows to create an OpenGL 3.0 rendering context. Before ForceWare 181.00, we had to use NVemulate to enable OpenGL 3.0 support. Here is how to use WGL_ARB_create_context:

// wglCreateContextAttribsARB prototype.
typedef HGLRC (APIENTRYP PFNWGLCREATECONTEXTATTRIBSARBPROC)\
(HDC, HGLRC, const int*);
PFNWGLCREATECONTEXTATTRIBSARBPROC wglCreateContextAttribsARB;

// Get a pointer on the create context func.
wglCreateContextAttribsARB = \
(PFNWGLCREATECONTEXTATTRIBSARBPROC) \
wglGetProcAddress("wglCreateContextAttribsARB");

// Create an OpenGL 3.0 context.
int attribList[6] = 
{
  WGL_CONTEXT_MAJOR_VERSION_ARB, 3,
  WGL_CONTEXT_MINOR_VERSION_ARB, 0,
  0, 0
};
HGLRC gl3Ctx = wglCreateContextAttribsARB(dc, 0, attribList);
wglMakeCurrent(dc, gl3Ctx);				

//
// Do something with this opengl 3.0 rendering context.
//

// Delete the context
wglDeleteContext(gl3Ctx);
gl3Ctx = NULL;

If the attribList is not supplied, a 2.1 OpenGL context is created. If the context is successfully created you should get 3.0 NVIDIA 181.00 for GL_VERSION and 1.30 NVIDIA via Cg compiler for GL_SHADING_LANGUAGE_VERSION:

GPU Caps Viewer 1.7.0


This screenshot comes from the upcomming version of GPU Caps Viewer (1.7.0 – not yet available) that supports OpenGL 3.0. Stay tuned!

GL_ARB_texture_rg is a new one (red) and two (red-green) channels internal texture format that aims at replacing the old luminance-alpha format. This format can be used for texturing as well as for rendering into with FBO (framebuffer object). GL_EXT_texture_swizzle is used for swizzling texture channels. For exemple:

glTexParameteri(GL_TEXTURE_2D, 
GL_TEXTURE_SWIZZLE_R_EXT, GL_ONE);

will set red channel to 1 (float or integer). And

glTexParameteri(GL_TEXTURE_2D, 
GL_TEXTURE_SWIZZLE_G_EXT, GL_BLUE);

will set green channel with blue channel.

GL_EXT_vertex_array_bgra allows to fetch a vertex component (mainly color componant) from a Direct3D color array where color is stored as BGRA. This extension avoids to perform the swizzling in the vertex shader.

The extension GL_NV_transform_feedback2

is for GeForce GTX 260/280 and thus is not present for the GeForce 8800 GTX.

With an OpenGL 2.1 rendering context, ForceWare 181.00 exposes 174 (GeForce 8/9) or 175 (GeForce GTX 2xx) OpenGL extensions.

Here are the main OpenGL features of ForceWare 181.00:
- OpenGL Renderer: GeForce 8800 GTX/PCI/SSE2
- Vendor: NVIDIA Corporation
- Drivers Version: Forceware 6.14.11.8100 (12-15-2008)
- OpenGL Version: 2.1.2
- GLSL (OpenGL Shading Language) Version: 1.20 NVIDIA via Cg compiler
- ARB Texture Units: 4
- Vertex Shader Texture Units: 32
- Pixel Shader Texture Units: 32
- Geometry Shader Texture Units: 32
- Max Texture Size: 8192×8192
- Max Anisotropic Filtering Value: X16.0
- Max Point Sprite Size: 63.4
- Max Dynamic Lights: 8
- Max Viewport Size: 8192×8192
- Max Vertex Uniform Components: 4096
- Max Fragment Uniform Components: 2048
- Max Geometry Uniform Components: 2048
- Max Varying Float: 60
- Max Vertex Bindable Uniforms: 12
- Max Fragment Bindable Uniforms: 12
- Max Geometry Bindable Uniforms: 12

The extensions exposed by old ForceWare drivers are available HERE. You can use GPU Caps Viewer to retrieve the list of extensions of your graphics card.

  • GL_ARB_color_buffer_float
  • GL_ARB_depth_texture
  • GL_ARB_draw_buffers
  • GL_ARB_draw_instanced
  • GL_ARB_fragment_program
  • GL_ARB_fragment_program_shadow
  • GL_ARB_fragment_shader
  • GL_ARB_half_float_pixel
  • GL_ARB_half_float_vertex
  • GL_ARB_framebuffer_object
  • GL_ARB_geometry_shader4
  • GL_ARB_imaging
  • GL_ARB_map_buffer_range
  • GL_ARB_multisample
  • GL_ARB_multitexture
  • GL_ARB_occlusion_query
  • GL_ARB_pixel_buffer_object
  • GL_ARB_point_parameters
  • GL_ARB_point_sprite
  • GL_ARB_shadow
  • GL_ARB_shader_objects
  • GL_ARB_shading_language_100
  • GL_ARB_texture_border_clamp
  • GL_ARB_texture_buffer_object
  • GL_ARB_texture_compression
  • GL_ARB_texture_cube_map
  • GL_ARB_texture_env_add
  • GL_ARB_texture_env_combine
  • GL_ARB_texture_env_dot3
  • GL_ARB_texture_float
  • GL_ARB_texture_mirrored_repeat
  • GL_ARB_texture_non_power_of_two
  • GL_ARB_texture_rectangle
  • GL_ARB_texture_rg
  • GL_ARB_transpose_matrix
  • GL_ARB_vertex_array_object
  • GL_ARB_vertex_buffer_object
  • GL_ARB_vertex_program
  • GL_ARB_vertex_shader
  • GL_ARB_window_pos
  • GL_ATI_draw_buffers
  • GL_ATI_texture_float
  • GL_ATI_texture_mirror_once
  • GL_S3_s3tc
  • GL_EXT_texture_env_add
  • GL_EXT_abgr
  • GL_EXT_bgra
  • GL_EXT_blend_color
  • GL_EXT_blend_equation_separate
  • GL_EXT_blend_func_separate
  • GL_EXT_blend_minmax
  • GL_EXT_blend_subtract
  • GL_EXT_compiled_vertex_array
  • GL_EXT_Cg_shader
  • GL_EXT_bindable_uniform
  • GL_EXT_depth_bounds_test
  • GL_EXT_direct_state_access
  • GL_EXT_draw_buffers2
  • GL_EXT_draw_instanced
  • GL_EXT_draw_range_elements
  • GL_EXT_fog_coord
  • GL_EXT_framebuffer_blit
  • GL_EXT_framebuffer_multisample
  • GL_EXT_framebuffer_object
  • GL_EXTX_framebuffer_mixed_formats
  • GL_EXT_framebuffer_sRGB
  • GL_EXT_geometry_shader4
  • GL_EXT_gpu_program_parameters
  • GL_EXT_gpu_shader4
  • GL_EXT_multi_draw_arrays
  • GL_EXT_packed_depth_stencil
  • GL_EXT_packed_float
  • GL_EXT_packed_pixels
  • GL_EXT_pixel_buffer_object
  • GL_EXT_point_parameters
  • GL_EXT_rescale_normal
  • GL_EXT_secondary_color
  • GL_EXT_separate_specular_color
  • GL_EXT_shadow_funcs
  • GL_EXT_stencil_two_side
  • GL_EXT_stencil_wrap
  • GL_EXT_texture3D
  • GL_EXT_texture_array
  • GL_EXT_texture_buffer_object
  • GL_EXT_texture_compression_latc
  • GL_EXT_texture_compression_rgtc
  • GL_EXT_texture_compression_s3tc
  • GL_EXT_texture_cube_map
  • GL_EXT_texture_edge_clamp
  • GL_EXT_texture_env_combine
  • GL_EXT_texture_env_dot3
  • GL_EXT_texture_filter_anisotropic
  • GL_EXT_texture_integer
  • GL_EXT_texture_lod
  • GL_EXT_texture_lod_bias
  • GL_EXT_texture_mirror_clamp
  • GL_EXT_texture_object
  • GL_EXT_texture_sRGB
  • GL_EXT_texture_swizzle
  • GL_EXT_texture_shared_exponent
  • GL_EXT_timer_query
  • GL_EXT_vertex_array
  • GL_EXT_vertex_array_bgra
  • GL_IBM_rasterpos_clip
  • GL_IBM_texture_mirrored_repeat
  • GL_KTX_buffer_region
  • GL_NV_blend_square
  • GL_NV_copy_depth_to_color
  • GL_NV_depth_buffer_float
  • GL_NV_conditional_render
  • GL_NV_depth_clamp
  • GL_NV_explicit_multisample
  • GL_NV_fence
  • GL_NV_float_buffer
  • GL_NV_fog_distance
  • GL_NV_fragment_program
  • GL_NV_fragment_program_option
  • GL_NV_fragment_program2
  • GL_NV_framebuffer_multisample_coverage
  • GL_NV_geometry_shader4
  • GL_NV_gpu_program4
  • GL_NV_half_float
  • GL_NV_light_max_exponent
  • GL_NV_multisample_coverage
  • GL_NV_multisample_filter_hint
  • GL_NV_occlusion_query
  • GL_NV_packed_depth_stencil
  • GL_NV_parameter_buffer_object
  • GL_NV_pixel_data_range
  • GL_NV_point_sprite
  • GL_NV_primitive_restart
  • GL_NV_register_combiners
  • GL_NV_register_combiners2
  • GL_NV_texgen_reflection
  • GL_NV_texture_compression_vtc
  • GL_NV_texture_env_combine4
  • GL_NV_texture_expand_normal
  • GL_NV_texture_rectangle
  • GL_NV_texture_shader
  • GL_NV_texture_shader2
  • GL_NV_texture_shader3
  • GL_NV_transform_feedback
  • GL_NV_vertex_array_range
  • GL_NV_vertex_array_range2
  • GL_NV_vertex_program
  • GL_NV_vertex_program1_1
  • GL_NV_vertex_program2
  • GL_NV_vertex_program2_option
  • GL_NV_vertex_program3
  • GL_NVX_conditional_render
  • GL_SGIS_generate_mipmap
  • GL_SGIS_texture_lod
  • GL_SGIX_depth_texture
  • GL_SGIX_shadow
  • GL_SUN_slice_accum
  • GL_WIN_swap_hint
  • WGL_EXT_swap_control
  • WGL_ARB_buffer_region
  • WGL_ARB_extensions_string
  • WGL_ARB_make_current_read
  • WGL_ARB_multisample
  • WGL_ARB_pbuffer
  • WGL_ARB_pixel_format
  • WGL_ARB_pixel_format_float
  • WGL_ARB_render_texture
  • WGL_ATI_pixel_format_float
  • WGL_ARB_create_context
  • WGL_EXT_extensions_string
  • WGL_EXT_framebuffer_sRGB
  • WGL_EXT_pixel_format_packed_float
  • WGL_NV_float_buffer
  • WGL_NV_multisample_coverage
  • WGL_NV_render_depth_texture
  • WGL_NV_render_texture_rectangle

A more detailed description of each extension can be found at the following addresses:





[ Subscribe to Geeks3D latest news by email ]

Geeks3D.com

↑ Grab this Headline Animator