PDA

View Full Version : NOPT texture on OpenGL 1.4



Damien
09-20-2011, 12:27 AM
Hey guys,

Could anybody give me a hint on how to draw non-power of 2 texture on older versions of OpenGL?

I've made a program displaying data from a camera and updating a display when a new frame comes in. From camera to camera the detector size changes and there start my problems.

On newer hardware everything's fine but I need to ship the software on an industrial motherboard having a built-in Intel graphics hardware. It has OpenGL 1.4 support and the following list of extensions:

- GL_EXT_blend_minmax
- GL_EXT_blend_subtract
- GL_EXT_blend_color
- GL_EXT_abgr
- GL_EXT_texture3D
- GL_EXT_clip_volume_hint
- GL_EXT_compiled_vertex_array
- GL_EXT_cull_vertex
- GL_SGIS_texture_edge_clamp
- GL_SGIS_generate_mipmap
- GL_EXT_draw_range_elements
- GL_SGIS_texture_lod
- GL_EXT_rescale_normal
- GL_EXT_packed_pixels
- GL_EXT_separate_specular_color
- GL_ARB_multitexture
- GL_EXT_texture_env_combine
- GL_EXT_bgra
- GL_EXT_blend_func_separate
- GL_EXT_secondary_color
- GL_EXT_fog_coord
- GL_EXT_texture_env_add
- GL_ARB_texture_cube_map
- GL_ARB_transpose_matrix
- GL_ARB_texture_env_add
- GL_IBM_texture_mirrored_repeat
- GL_EXT_multi_draw_arrays
- GL_NV_blend_square
- GL_ARB_texture_compression
- GL_3DFX_texture_compression_FXT1
- GL_EXT_texture_filter_anisotropic
- GL_ARB_texture_border_clamp
- GL_ARB_point_parameters
- GL_ARB_texture_env_combine
- GL_ARB_texture_env_dot3
- GL_ARB_texture_env_crossbar
- GL_EXT_texture_compression_s3tc
- GL_ARB_shadow
- GL_ARB_window_pos
- GL_EXT_shadow_funcs
- GL_EXT_stencil_wrap
- GL_ARB_vertex_program
- GL_ARB_fragment_program
- GL_EXT_stencil_two_side
- GL_ARB_vertex_buffer_object
- GL_EXT_texture_lod_bias
- GL_NV_texgen_reflection
- GL_ARB_depth_texture
- GL_WIN_swap_hint

So ARB_texture_non_power_of_two is not supported, nor TEXTURE_RECTANGLE.

I'd like to make the SW compatible for virtually all OpenGL enabled hardware. I really would appreciate a hint.

Cheers,
-Damien

skynet
09-20-2011, 01:58 AM
On this card (Intel, eh?) you have no other chance than to create the next larger power-of-two texture and use a rectangular part of it. There seems to be no support for real render-to-texture also. The only chance to do something similar on this machine is to render into the backbuffer and use glCopyTex[Sub]Image2D() in order to copy the backbuffer contents into the texture.