Hi,
i moved our engine from jogl / joal to lwjgl a few weeks ago. Yesterday a tester detected errors when using dds textures. First i thought it has to be a hardware problem (graphics hardware does not support the texture compression format), but as i figured out today, the problem exists on every hardware.
I cannot find the mistake i am making and also double checked if something went wrong when the engine was ported.
The current system i am working with is a nvidia 7600 GS with the following information provided by the driver:
OpenGL Version : 2.1.2
OpenGL Vendor : NVIDIA Corporation
OpenGL Renderer: GeForce 7600 GS/PCI/SSE2
Available Texture Compression:
COMPRESSED_RGB_S3TC_DXT1_EXT(33776)
COMPRESSED_RGBA_S3TC_DXT3_EXT(33778)
COMPRESSED_RGBA_S3TC_DXT5_EXT(33779)
--- Extensions ---
GL_ARB_color_buffer_float
GL_ARB_depth_texture
GL_ARB_draw_buffers
GL_ARB_fragment_program
GL_ARB_fragment_program_shadow
GL_ARB_fragment_shader
GL_ARB_half_float_pixel
GL_ARB_imaging
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_shader_objects
GL_ARB_shading_language_100
GL_ARB_shadow
GL_ARB_texture_border_clamp
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_transpose_matrix
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_EXT_Cg_shader
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_depth_bounds_test
GL_EXT_draw_range_elements
GL_EXT_fog_coord
GL_EXT_framebuffer_blit
GL_EXT_framebuffer_multisample
GL_EXT_framebuffer_object
GL_EXT_gpu_program_parameters
GL_EXT_multi_draw_arrays
GL_EXT_packed_depth_stencil
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_compression_s3tc
GL_EXT_texture_cube_map
GL_EXT_texture_edge_clamp
GL_EXT_texture_env_add
GL_EXT_texture_env_combine
GL_EXT_texture_env_dot3
GL_EXT_texture_filter_anisotropic
GL_EXT_texture_lod_bias
GL_EXT_texture_mirror_clamp
GL_EXT_texture_object
GL_EXT_texture_sRGB
GL_EXT_timer_query
GL_EXT_vertex_array
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_clamp
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_half_float
GL_NV_light_max_exponent
GL_NV_multisample_filter_hint
GL_NV_occlusion_query
GL_NV_packed_depth_stencil
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_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_S3_s3tc
GL_SGIS_generate_mipmap
GL_SGIS_texture_lod
GL_SGIX_depth_texture
GL_SGIX_shadow
GL_SUN_slice_accum
GL_WIN_swap_hint
The texture format is DDS_PixelFormat.FOURCC_DXT1 so i am using EXTTextureCompressionS3TC.GL_COMPRESSED_RGB_S3TC_DXT1_EXT as internal format for opengl. The "bb" byte buffer of the image data is in native order and direct. To upload the image data i use
GL11.glBindTexture(texType, id);
GL11.glTexParameteri(texType, GL11.GL_TEXTURE_MIN_FILTER, minFilter.getID());
GL11.glTexParameteri(texType, GL11.GL_TEXTURE_MAG_FILTER, magFilter.getID());
GL11.glTexParameteri(texType, GL11.GL_TEXTURE_WRAP_S, wrapMode_s.getID());
GL11.glTexParameteri(texType, GL11.GL_TEXTURE_WRAP_T, wrapMode_t.getID());
ARBTextureCompression.glCompressedTexImage2DARB(GL11.GL_TEXTURE_2D, i, cData.getFormat(), nWidth, nHeight, 0, bb);
nWidth and nHeight are both 256 and the buffers capacity, limit, position is correct.
When calling this, i get an GL11.GL_INVALID_OPERATION Error.
I read the methods docu
http://www.opengl.org/sdk/docs/man/xhtml/glCompressedTexImage2D.xml but couldn't find out what the problem is. In fact, i worked the code did work before switching from jogl to lwjgl. By the way GL13.glCompressedTexImage2D results in the same error...
Any suggestions anyone? Would be great..
Faust.