NOPT texture on OpenGL 1.4

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.


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.