Opengl 使用统一采样器2D[]时无法解释的行为
很抱歉,这需要一点解释。我想让它尽可能简单 我想做什么: 我正在可视化高度场。高度场可能有多个面片。面片是改变高度场的较小纹理 我使用的是OpenGL 4.0,主要是tesselation着色器。然而,对于这个问题,这应该是无关紧要的 什么工作准备就绪。 我有高度场(无补丁)的可视化工作。与此问题相关的有趣部分是细分求值着色器和片段着色器 细分求值着色器从高度场采样器中为每个顶点获取其高度Opengl 使用统一采样器2D[]时无法解释的行为,opengl,glsl,shader,opengl-4,Opengl,Glsl,Shader,Opengl 4,很抱歉,这需要一点解释。我想让它尽可能简单 我想做什么: 我正在可视化高度场。高度场可能有多个面片。面片是改变高度场的较小纹理 我使用的是OpenGL 4.0,主要是tesselation着色器。然而,对于这个问题,这应该是无关紧要的 什么工作准备就绪。 我有高度场(无补丁)的可视化工作。与此问题相关的有趣部分是细分求值着色器和片段着色器 细分求值着色器从高度场采样器中为每个顶点获取其高度 layout(quads, fractional_odd_spacing, ccw) in; out f
layout(quads, fractional_odd_spacing, ccw) in;
out float onEdge;
out float teDistanceToMinHeight;
out vec4 tcPosition;
void main()
{
// bilinear interpolate: position
vec4 pos_a = mix(gl_in[0].gl_Position, gl_in[1].gl_Position, gl_TessCoord.x);
vec4 pos_b = mix(gl_in[3].gl_Position, gl_in[2].gl_Position, gl_TessCoord.x);
vec4 position = mix(pos_a, pos_b, gl_TessCoord.y);
// bilinear interpolate: hf texture coordinate
vec2 tex_a = mix(gl_in[0].gl_TexCoord[HFTexCoordID].xy, gl_in[1].gl_TexCoord[HFTexCoordID].xy, gl_TessCoord.x);
vec2 tex_b = mix(gl_in[3].gl_TexCoord[HFTexCoordID].xy, gl_in[2].gl_TexCoord[HFTexCoordID].xy, gl_TessCoord.x);
vec2 hfTexCoord = mix(tex_a, tex_b, gl_TessCoord.y);
float height = getHeightFieldHeight(hfTexCoord);
position.y = height;
//position.y = getHeightFieldHeightMin();
gl_Position = gl_ModelViewProjectionMatrix * position;
tcPosition = gl_Position;
gl_TexCoord[HFTexCoordID].xy = hfTexCoord;
// a vertex is on the edge of a patch if one of the tess coords is 0
onEdge = float((gl_TessCoord.x == 0 || gl_TessCoord.y == 0));
teDistanceToMinHeight = height - getHeightFieldHeightMin();
}
片段着色器使用属于手边片段的顶点的创造性高度来访问1D高度palett纹理。请暂时忽略高度梯度。它用于计算法线。这完全可以
in float onEdge;
in float teDistanceToMinHeight;
in vec4 tcPosition;
out vec4 FragColor;
vec3
getHeightMapGradient(in vec2 ts_position,
in vec2 texel_offset)
{
vec3 x = vec3(2.0 * texel_offset.x, 0.0, getHeightFieldHeight(ts_position + vec2(texel_offset.x, 0.0))
- getHeightFieldHeight(ts_position - vec2(texel_offset.x, 0.0)));
vec3 y = vec3(0.0, 2.0 * texel_offset.y, getHeightFieldHeight(ts_position + vec2(0.0, texel_offset.y))
- getHeightFieldHeight(ts_position - vec2(0.0, texel_offset.y)));
return cross(x, y);
}
void main()
{
if(teDistanceToMinHeight < 0.00001){
// filter points near the zero position
discard;
}
// attributes
vec2 hfTexCoords = gl_TexCoord[HFTexCoordID].xy;
//float hfPaletteTexCoord = getHeightFieldHeight(hfTexCoords) / HeightFieldHeight;
float hfPaletteTexCoord = (texture(HeightField, hfTexCoords).r -HeightFieldLowering);
vec2 heightMapSize = vec2(textureSize(HeightField, 0).xy);
vec2 heightMapTexelSize = vec2(1.0) / vec2(heightMapSize);
// some standard colors
vec4 white = vec4(1);
vec4 yellow = vec4(1,1,0,1);
vec4 blue = vec4(0,0,1,1);
// get the color
FragColor = texture(HeightFieldPalette, hfPaletteTexCoord ); // use height field palette as color
if(onEdge > 0.9 && ShowOriginalGrid == 1 ){
FragColor = mix(FragColor, yellow, 0.5);
}
// shading
vec3 n = normalize(getHeightMapGradient(hfTexCoords, heightMapTexelSize).xzy);
vec3 l = vec3(1,1,0);
vec3 v = normalize(CameraPosition - tcPosition.xyz);
vec3 h = normalize(l + v);
float df= dot(n, l);
FragColor = (FragColor * (df * 0.5 + 0.5)) // diffuse
+ vec4(1) * pow(max(0.0, dot(n,h)), 60.0) // specular
+ 0.1; // ambient
}
sampler2D[]背后的想法是拥有一种数组,而该数组的每个纹理可能具有不同的大小。我知道这个构造中的每一个都使用(在本例中)20个纹理单元。这是罚款的限制
当我访问面片时,片段着色器仅输出黑色像素。据我所知,细分评估着色器工作正常,因为我可以在高度字段中看到山丘,但这不是它的一部分
我非常感谢你的建议。关于这个问题
我知道我可以使用一个数组,但是每个元素(纹理)必须有相同的大小。但我需要的补丁大小是灵活的。将面片切割成固定大小的纹理,然后在着色器中将它们粘在一起,这可能是另一种选择,但我不想实现这种组织开销,除非我真的必须这样做
信息日志
Visualization Lib
rary v2011.5.1142 [f32]
Jun 9 2011 - 11:36:25 - GCC compiler [RELEASE] [x32]
--- Environment ---
VL_LOGFILE_PATH <not present>
VL_DATA_PATH <not present>
VL_VERBOSITY_LEVEL = NORMAL
VL_CHECK_GL_STATES = YES
--- Global Settings ---
Log file = log.txt
Data path = ../data
Verbosity level = NORMAL
Check OpenGL States = YES
--- GLEW ---
GLEW version: 1.5.7
--- OpenGL Info ---
OpenGL version: 4.1.0 NVIDIA 260.19.21
OpenGL vendor: NVIDIA Corporation
OpenGL renderer: Quadro 6000/PCI/SSE2
OpenGL profile: Compatible
GLSL version: 4.10 NVIDIA via Cg compiler
Max texture size: 16384
Texture coords: 8
Texture conventional units: 4
Texture image units: 32
Anisotropic texture filter: YES, 16X
S3 Texture Compression: YES
Vertex Buffer Object: YES
Pixel Buffer Object: YES
Framebuffer Object: YES
Max vertex attributes: 16
Max varying floats: 60
Max fragment uniform components: 2048
Max vertex uniform components: 4096
Max elements vertices: 1048576
Max elements indices: 1048576
--- OpenGL Extensions ---
GL_ARB_blend_func_extended GL_ARB_color_buffer_float
GL_ARB_compatibility GL_ARB_copy_buffer
GL_ARB_depth_buffer_float GL_ARB_depth_clamp
GL_ARB_depth_texture GL_ARB_draw_buffers
GL_ARB_draw_buffers_blend GL_ARB_draw_indirect
GL_ARB_draw_elements_base_vertex GL_ARB_draw_instanced
GL_ARB_ES2_compatibility GL_ARB_explicit_attrib_location
GL_ARB_fragment_coord_conventions GL_ARB_fragment_program
GL_ARB_fragment_program_shadow GL_ARB_fragment_shader
GL_ARB_framebuffer_object GL_ARB_framebuffer_sRGB
GL_ARB_geometry_shader4 GL_ARB_get_program_binary
GL_ARB_gpu_shader5 GL_ARB_gpu_shader_fp64
GL_ARB_half_float_pixel GL_ARB_half_float_vertex
GL_ARB_imaging GL_ARB_instanced_arrays
GL_ARB_map_buffer_range GL_ARB_multisample
GL_ARB_multitexture GL_ARB_occlusion_query
GL_ARB_occlusion_query2 GL_ARB_pixel_buffer_object
GL_ARB_point_parameters GL_ARB_point_sprite
GL_ARB_provoking_vertex GL_ARB_robustness
GL_ARB_sample_shading GL_ARB_sampler_objects
GL_ARB_seamless_cube_map GL_ARB_separate_shader_objects
GL_ARB_shader_bit_encoding GL_ARB_shader_objects
GL_ARB_shader_precision GL_ARB_shader_subroutine
GL_ARB_shading_language_100 GL_ARB_shadow
GL_ARB_sync GL_ARB_tessellation_shader
GL_ARB_texture_border_clamp GL_ARB_texture_buffer_object
GL_ARB_texture_buffer_object_rgb32 GL_ARB_texture_compression
GL_ARB_texture_compression_bptc GL_ARB_texture_compression_rgtc
GL_ARB_texture_cube_map GL_ARB_texture_cube_map_array
GL_ARB_texture_env_add GL_ARB_texture_env_combine
GL_ARB_texture_env_crossbar GL_ARB_texture_env_dot3
GL_ARB_texture_float GL_ARB_texture_gather
GL_ARB_texture_mirrored_repeat GL_ARB_texture_multisample
GL_ARB_texture_non_power_of_two GL_ARB_texture_query_lod
GL_ARB_texture_rectangle GL_ARB_texture_rg
GL_ARB_texture_rgb10_a2ui GL_ARB_texture_swizzle
GL_ARB_timer_query GL_ARB_transform_feedback2
GL_ARB_transform_feedback3 GL_ARB_transpose_matrix
GL_ARB_uniform_buffer_object GL_ARB_vertex_array_bgra
GL_ARB_vertex_array_object GL_ARB_vertex_attrib_64bit
GL_ARB_vertex_buffer_object GL_ARB_vertex_program
GL_ARB_vertex_shader GL_ARB_vertex_type_2_10_10_10_rev
GL_ARB_viewport_array 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_bindable_uniform
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_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_EXTX_framebuffer_mixed_formats
GL_EXT_framebuffer_object 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_provoking_vertex
GL_EXT_rescale_normal GL_EXT_secondary_color
GL_EXT_separate_shader_objects GL_EXT_separate_specular_color
GL_EXT_shader_image_load_store 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_shared_exponent GL_EXT_texture_sRGB
GL_EXT_texture_swizzle GL_EXT_timer_query
GL_EXT_transform_feedback2 GL_EXT_vertex_array
GL_EXT_vertex_array_bgra GL_EXT_vertex_attrib_64bit
GL_IBM_rasterpos_clip GL_IBM_texture_mirrored_repeat
GL_KTX_buffer_region GL_NV_blend_square
GL_NV_conditional_render GL_NV_copy_depth_to_color
GL_NV_copy_image GL_NV_depth_buffer_float
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_gpu_program4_1
GL_NV_gpu_program5 GL_NV_gpu_program_fp64
GL_NV_gpu_shader5 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_parameter_buffer_object2 GL_NV_pixel_data_range
GL_NV_point_sprite GL_NV_primitive_restart
GL_NV_register_combiners GL_NV_register_combiners2
GL_NV_shader_buffer_load GL_NV_texgen_reflection
GL_NV_texture_barrier GL_NV_texture_compression_vtc
GL_NV_texture_env_combine4 GL_NV_texture_expand_normal
GL_NV_texture_multisample GL_NV_texture_rectangle
GL_NV_texture_shader GL_NV_texture_shader2
GL_NV_texture_shader3 GL_NV_transform_feedback
GL_NV_transform_feedback2 GL_NV_vdpau_interop
GL_NV_vertex_array_range GL_NV_vertex_array_range2
GL_NV_vertex_attrib_integer_64bit GL_NV_vertex_buffer_unified_memory
GL_NV_vertex_program GL_NV_vertex_program1_1
GL_NV_vertex_program2 GL_NV_vertex_program2_option
GL_NV_vertex_program3 GL_NV_video_capture
GL_NVX_conditional_render GL_NVX_gpu_memory_info
GL_SGIS_generate_mipmap GL_SGIS_texture_lod
GL_SGIX_depth_texture GL_SGIX_shadow
GL_SUN_slice_accum
--- GLEW ---
GLEW version: 1.5.7
--- OpenGL Info ---
OpenGL version: 4.1.0 NVIDIA 260.19.21
OpenGL vendor: NVIDIA Corporation
OpenGL renderer: Quadro 6000/PCI/SSE2
OpenGL profile: Compatible
GLSL version: 4.10 NVIDIA via Cg compiler
Max texture size: 16384
Texture coords: 8
Texture conventional units: 4
Texture image units: 32
Anisotropic texture filter: YES, 16X
S3 Texture Compression: YES
Vertex Buffer Object: YES
Pixel Buffer Object: YES
Framebuffer Object: YES
Max vertex attributes: 16
Max varying floats: 60
Max fragment uniform components: 2048
Max vertex uniform components: 4096
Max elements vertices: 1048576
Max elements indices: 1048576
--- OpenGL Extensions ---
GL_ARB_blend_func_extended GL_ARB_color_buffer_float
GL_ARB_compatibility GL_ARB_copy_buffer
GL_ARB_depth_buffer_float GL_ARB_depth_clamp
GL_ARB_depth_texture GL_ARB_draw_buffers
GL_ARB_draw_buffers_blend GL_ARB_draw_indirect
GL_ARB_draw_elements_base_vertex GL_ARB_draw_instanced
GL_ARB_ES2_compatibility GL_ARB_explicit_attrib_location
GL_ARB_fragment_coord_conventions GL_ARB_fragment_program
GL_ARB_fragment_program_shadow GL_ARB_fragment_shader
GL_ARB_framebuffer_object GL_ARB_framebuffer_sRGB
GL_ARB_geometry_shader4 GL_ARB_get_program_binary
GL_ARB_gpu_shader5 GL_ARB_gpu_shader_fp64
GL_ARB_half_float_pixel GL_ARB_half_float_vertex
GL_ARB_imaging GL_ARB_instanced_arrays
GL_ARB_map_buffer_range GL_ARB_multisample
GL_ARB_multitexture GL_ARB_occlusion_query
GL_ARB_occlusion_query2 GL_ARB_pixel_buffer_object
GL_ARB_point_parameters GL_ARB_point_sprite
GL_ARB_provoking_vertex GL_ARB_robustness
GL_ARB_sample_shading GL_ARB_sampler_objects
GL_ARB_seamless_cube_map GL_ARB_separate_shader_objects
GL_ARB_shader_bit_encoding GL_ARB_shader_objects
GL_ARB_shader_precision GL_ARB_shader_subroutine
GL_ARB_shading_language_100 GL_ARB_shadow
GL_ARB_sync GL_ARB_tessellation_shader
GL_ARB_texture_border_clamp GL_ARB_texture_buffer_object
GL_ARB_texture_buffer_object_rgb32 GL_ARB_texture_compression
GL_ARB_texture_compression_bptc GL_ARB_texture_compression_rgtc
GL_ARB_texture_cube_map GL_ARB_texture_cube_map_array
GL_ARB_texture_env_add GL_ARB_texture_env_combine
GL_ARB_texture_env_crossbar GL_ARB_texture_env_dot3
GL_ARB_texture_float GL_ARB_texture_gather
GL_ARB_texture_mirrored_repeat GL_ARB_texture_multisample
GL_ARB_texture_non_power_of_two GL_ARB_texture_query_lod
GL_ARB_texture_rectangle GL_ARB_texture_rg
GL_ARB_texture_rgb10_a2ui GL_ARB_texture_swizzle
GL_ARB_timer_query GL_ARB_transform_feedback2
GL_ARB_transform_feedback3 GL_ARB_transpose_matrix
GL_ARB_uniform_buffer_object GL_ARB_vertex_array_bgra
GL_ARB_vertex_array_object GL_ARB_vertex_attrib_64bit
GL_ARB_vertex_buffer_object GL_ARB_vertex_program
GL_ARB_vertex_shader GL_ARB_vertex_type_2_10_10_10_rev
GL_ARB_viewport_array 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_bindable_uniform
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_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_EXTX_framebuffer_mixed_formats
GL_EXT_framebuffer_object 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_provoking_vertex
GL_EXT_rescale_normal GL_EXT_secondary_color
GL_EXT_separate_shader_objects GL_EXT_separate_specular_color
GL_EXT_shader_image_load_store 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_shared_exponent GL_EXT_texture_sRGB
GL_EXT_texture_swizzle GL_EXT_timer_query
GL_EXT_transform_feedback2 GL_EXT_vertex_array
GL_EXT_vertex_array_bgra GL_EXT_vertex_attrib_64bit
GL_IBM_rasterpos_clip GL_IBM_texture_mirrored_repeat
GL_KTX_buffer_region GL_NV_blend_square
GL_NV_conditional_render GL_NV_copy_depth_to_color
GL_NV_copy_image GL_NV_depth_buffer_float
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_gpu_program4_1
GL_NV_gpu_program5 GL_NV_gpu_program_fp64
GL_NV_gpu_shader5 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_parameter_buffer_object2 GL_NV_pixel_data_range
GL_NV_point_sprite GL_NV_primitive_restart
GL_NV_register_combiners GL_NV_register_combiners2
GL_NV_shader_buffer_load GL_NV_texgen_reflection
GL_NV_texture_barrier GL_NV_texture_compression_vtc
GL_NV_texture_env_combine4 GL_NV_texture_expand_normal
GL_NV_texture_multisample GL_NV_texture_rectangle
GL_NV_texture_shader GL_NV_texture_shader2
GL_NV_texture_shader3 GL_NV_transform_feedback
GL_NV_transform_feedback2 GL_NV_vdpau_interop
GL_NV_vertex_array_range GL_NV_vertex_array_range2
GL_NV_vertex_attrib_integer_64bit GL_NV_vertex_buffer_unified_memory
GL_NV_vertex_program GL_NV_vertex_program1_1
GL_NV_vertex_program2 GL_NV_vertex_program2_option
GL_NV_vertex_program3 GL_NV_video_capture
GL_NVX_conditional_render GL_NVX_gpu_memory_info
GL_SGIS_generate_mipmap GL_SGIS_texture_lod
GL_SGIX_depth_texture GL_SGIX_shadow
GL_SUN_slice_accum
PatchesContainer::PatchesContainer: working dir: ./data/patches/pick_height_testing_png/
PatchesContainer::loadPatchesFromWorkingDir ignoring file = data/patches/pick_height_testing_png/.svn
Patch::initialize(): name = data/patches/pick_height_testing_png/patch01-position=20x20-maxHeight=1.0.png
width = 50
height = 50
depth = 0
format = IF_LUMINANCE
type = IT_UNSIGNED_BYTE
pitch = 50
bytealign = 1
Patch::initialize(): name = data/patches/pick_height_testing_png/patch02-position=20x2-maxHeight=1.5.png
width = 20
height = 20
depth = 0
format = IF_LUMINANCE
type = IT_UNSIGNED_BYTE
pitch = 20
bytealign = 1
Found matching densitymap ./data/density_maps/pick_height_testing_png.png
loading height field image
name = ./data/horizons/pick_height_testing.png
width = 200
height = 200
depth = 0
format = IF_LUMINANCE
type = IT_UNSIGNED_BYTE
pitch = 200
bytealign = 1
name = ./data/textures/tesselation_palette_blue_red.png
width = 300
height = 0
depth = 0
format = IF_RGB
type = IT_UNSIGNED_BYTE
pitch = 900
bytealign = 1
GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS: 32
可视化库
rary v2011.5.1142[f32]
2011年6月9日11:36:25-GCC编译器[发布][x32]
---环境---
VL_日志文件_路径
VL_数据_路径
详细程度=正常
VL\U CHECK\U GL\U STATES=是
---全局设置--
日志文件=Log.txt
数据路径=../Data
详细程度=正常
检查OpenGL状态=是
---格洛---
GLEW版本:1.5.7
---OpenGL信息---
OpenGL版本:4.1.0 NVIDIA 260.19.21
OpenGL供应商:NVIDIA公司
OpenGL渲染器:Quadro 6000/PCI/SSE2
OpenGL配置文件:兼容
GLSL版本:4.10 NVIDIA通过Cg编译器
最大纹理大小:16384
纹理坐标:8
纹理常规单位:4
纹理图像单位:32
各向异性纹理过滤器:是,16X
S3纹理压缩:是
顶点缓冲区对象:是
像素缓冲区对象:是
帧缓冲区对象:是
最大顶点属性:16
最大浮动:60
最大碎片均匀分量:2048
最大顶点均匀分量:4096
最大元素顶点数:1048576
最大元素指数:1048576
---OpenGL扩展--
GL\U ARB\U混合\U函数\U扩展GL\U ARB\U颜色\U缓冲\U浮点
GL\U ARB\U兼容性GL\U ARB\U复制\U缓冲区
GL\U ARB\U深度\缓冲器\浮动GL\U ARB\U深度\夹具
GL\U ARB\U深度\U纹理GL\U ARB\U绘制\U缓冲区
GL_ARB_draw_buffers_blend GL_ARB_draw_directive
GL_ARB_draw_元素_基础_顶点GL_ARB_draw_实例
GL_ARB_ES2_兼容性GL_ARB_显式属性位置
GL_ARB_fragment_coord_conventions GL_ARB_fragment_program
GL_ARB_fragment_program_shadow GL_ARB_fragment_着色器
GL\U ARB\U帧缓冲区\U对象GL\U ARB\U帧缓冲区\U sRGB
GL\u ARB\u几何体\u着色器4 GL\u ARB\u获取\u程序\u二进制
GL_ARB_gpu_着色器5 GL_ARB_gpu_着色器_fp64
GL_ARB_half_float_像素GL_ARB_half_float_顶点
GL_ARB_成像GL_ARB_实例阵列
GL\u ARB\u map\u buffer\u range GL\u ARB\u multisample
GL\u ARB\u多纹理GL\u ARB\u遮挡查询
GL\U ARB\U遮挡\U查询2 GL\U ARB\U像素\U缓冲区\U对象
GL\u ARB\u point\u参数GL\u ARB\u point\u精灵
GL_ARB_激发顶点GL_ARB_鲁棒性
GL\u ARB\u sample\u着色GL\u ARB\u sampler\u对象
GL_ARB_无缝_立方体_贴图GL_ARB_独立_着色器_对象
GL\U ARB\U着色器\U位\U编码GL\U ARB\U着色器\U对象
GL_ARB_着色器_精度GL_ARB_着色器_子例程
GL\u ARB\u着色\u语言\u 100 GL\u ARB\u阴影
GL_ARB_同步GL_ARB_细分_着色器
GL_ARB_纹理_边框_钳制GL_ARB_纹理_缓冲_对象
GL\U ARB\U纹理\U缓冲区\U对象\U rgb32 GL\U ARB\U纹理\U压缩
GL_ARB_纹理_压缩_bptc GL_ARB_纹理_压缩_rgtc
GL_ARB_纹理_立方体_贴图GL_ARB_纹理_立方体_贴图_数组
GL_ARB_纹理_环境_添加GL_ARB_纹理_环境_组合
GL_ARB_纹理_env_横杆GL_ARB_纹理_env_dot3
GL\U ARB\U纹理\U浮点GL\U ARB\U纹理\U聚集
GL_ARB_纹理_镜像_重复GL_ARB_纹理_多重采样
GL\U ARB\U纹理\U两个GL\U ARB\U纹理的非幂\U查询\U lod
GL\U ARB\U纹理\U矩形GL\U ARB\U纹理\U rg
GL_ARB_纹理_rgb10_a2ui GL_ARB_纹理_swizzle
GL\U ARB\U定时器\U查询GL\U ARB\U变换\U反馈2
GL_ARB_变换_反馈3 GL_ARB_转置矩阵
GL\u ARB\u统一\u缓冲区\u对象GL\u ARB\u顶点\u数组\u bgra
GL\U ARB\U顶点\U数组\U对象GL\U ARB\U顶点\U属性\U 64位
GL\U ARB\U顶点\U缓冲区\U对象GL\U ARB\U顶点\U程序
GL_ARB_顶点着色器GL_ARB_顶点_类型_2_10_10_修订版
GL\U ARB\U视口\U阵列GL\U ARB\U窗口\U位置
GL_ATI_draw_buffers GL_ATI_texture_float
GL_ATI_纹理_镜像_一次GL_S3_s3tc
GL_EXT_texture_env_add GL_EXT_abgr
GL_EXT_bgra GL_EXT_可装订制服
GL_外部_混合_颜色
uniform sampler2D[20] Patches;
Visualization Lib
rary v2011.5.1142 [f32]
Jun 9 2011 - 11:36:25 - GCC compiler [RELEASE] [x32]
--- Environment ---
VL_LOGFILE_PATH <not present>
VL_DATA_PATH <not present>
VL_VERBOSITY_LEVEL = NORMAL
VL_CHECK_GL_STATES = YES
--- Global Settings ---
Log file = log.txt
Data path = ../data
Verbosity level = NORMAL
Check OpenGL States = YES
--- GLEW ---
GLEW version: 1.5.7
--- OpenGL Info ---
OpenGL version: 4.1.0 NVIDIA 260.19.21
OpenGL vendor: NVIDIA Corporation
OpenGL renderer: Quadro 6000/PCI/SSE2
OpenGL profile: Compatible
GLSL version: 4.10 NVIDIA via Cg compiler
Max texture size: 16384
Texture coords: 8
Texture conventional units: 4
Texture image units: 32
Anisotropic texture filter: YES, 16X
S3 Texture Compression: YES
Vertex Buffer Object: YES
Pixel Buffer Object: YES
Framebuffer Object: YES
Max vertex attributes: 16
Max varying floats: 60
Max fragment uniform components: 2048
Max vertex uniform components: 4096
Max elements vertices: 1048576
Max elements indices: 1048576
--- OpenGL Extensions ---
GL_ARB_blend_func_extended GL_ARB_color_buffer_float
GL_ARB_compatibility GL_ARB_copy_buffer
GL_ARB_depth_buffer_float GL_ARB_depth_clamp
GL_ARB_depth_texture GL_ARB_draw_buffers
GL_ARB_draw_buffers_blend GL_ARB_draw_indirect
GL_ARB_draw_elements_base_vertex GL_ARB_draw_instanced
GL_ARB_ES2_compatibility GL_ARB_explicit_attrib_location
GL_ARB_fragment_coord_conventions GL_ARB_fragment_program
GL_ARB_fragment_program_shadow GL_ARB_fragment_shader
GL_ARB_framebuffer_object GL_ARB_framebuffer_sRGB
GL_ARB_geometry_shader4 GL_ARB_get_program_binary
GL_ARB_gpu_shader5 GL_ARB_gpu_shader_fp64
GL_ARB_half_float_pixel GL_ARB_half_float_vertex
GL_ARB_imaging GL_ARB_instanced_arrays
GL_ARB_map_buffer_range GL_ARB_multisample
GL_ARB_multitexture GL_ARB_occlusion_query
GL_ARB_occlusion_query2 GL_ARB_pixel_buffer_object
GL_ARB_point_parameters GL_ARB_point_sprite
GL_ARB_provoking_vertex GL_ARB_robustness
GL_ARB_sample_shading GL_ARB_sampler_objects
GL_ARB_seamless_cube_map GL_ARB_separate_shader_objects
GL_ARB_shader_bit_encoding GL_ARB_shader_objects
GL_ARB_shader_precision GL_ARB_shader_subroutine
GL_ARB_shading_language_100 GL_ARB_shadow
GL_ARB_sync GL_ARB_tessellation_shader
GL_ARB_texture_border_clamp GL_ARB_texture_buffer_object
GL_ARB_texture_buffer_object_rgb32 GL_ARB_texture_compression
GL_ARB_texture_compression_bptc GL_ARB_texture_compression_rgtc
GL_ARB_texture_cube_map GL_ARB_texture_cube_map_array
GL_ARB_texture_env_add GL_ARB_texture_env_combine
GL_ARB_texture_env_crossbar GL_ARB_texture_env_dot3
GL_ARB_texture_float GL_ARB_texture_gather
GL_ARB_texture_mirrored_repeat GL_ARB_texture_multisample
GL_ARB_texture_non_power_of_two GL_ARB_texture_query_lod
GL_ARB_texture_rectangle GL_ARB_texture_rg
GL_ARB_texture_rgb10_a2ui GL_ARB_texture_swizzle
GL_ARB_timer_query GL_ARB_transform_feedback2
GL_ARB_transform_feedback3 GL_ARB_transpose_matrix
GL_ARB_uniform_buffer_object GL_ARB_vertex_array_bgra
GL_ARB_vertex_array_object GL_ARB_vertex_attrib_64bit
GL_ARB_vertex_buffer_object GL_ARB_vertex_program
GL_ARB_vertex_shader GL_ARB_vertex_type_2_10_10_10_rev
GL_ARB_viewport_array 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_bindable_uniform
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_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_EXTX_framebuffer_mixed_formats
GL_EXT_framebuffer_object 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_provoking_vertex
GL_EXT_rescale_normal GL_EXT_secondary_color
GL_EXT_separate_shader_objects GL_EXT_separate_specular_color
GL_EXT_shader_image_load_store 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_shared_exponent GL_EXT_texture_sRGB
GL_EXT_texture_swizzle GL_EXT_timer_query
GL_EXT_transform_feedback2 GL_EXT_vertex_array
GL_EXT_vertex_array_bgra GL_EXT_vertex_attrib_64bit
GL_IBM_rasterpos_clip GL_IBM_texture_mirrored_repeat
GL_KTX_buffer_region GL_NV_blend_square
GL_NV_conditional_render GL_NV_copy_depth_to_color
GL_NV_copy_image GL_NV_depth_buffer_float
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_gpu_program4_1
GL_NV_gpu_program5 GL_NV_gpu_program_fp64
GL_NV_gpu_shader5 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_parameter_buffer_object2 GL_NV_pixel_data_range
GL_NV_point_sprite GL_NV_primitive_restart
GL_NV_register_combiners GL_NV_register_combiners2
GL_NV_shader_buffer_load GL_NV_texgen_reflection
GL_NV_texture_barrier GL_NV_texture_compression_vtc
GL_NV_texture_env_combine4 GL_NV_texture_expand_normal
GL_NV_texture_multisample GL_NV_texture_rectangle
GL_NV_texture_shader GL_NV_texture_shader2
GL_NV_texture_shader3 GL_NV_transform_feedback
GL_NV_transform_feedback2 GL_NV_vdpau_interop
GL_NV_vertex_array_range GL_NV_vertex_array_range2
GL_NV_vertex_attrib_integer_64bit GL_NV_vertex_buffer_unified_memory
GL_NV_vertex_program GL_NV_vertex_program1_1
GL_NV_vertex_program2 GL_NV_vertex_program2_option
GL_NV_vertex_program3 GL_NV_video_capture
GL_NVX_conditional_render GL_NVX_gpu_memory_info
GL_SGIS_generate_mipmap GL_SGIS_texture_lod
GL_SGIX_depth_texture GL_SGIX_shadow
GL_SUN_slice_accum
--- GLEW ---
GLEW version: 1.5.7
--- OpenGL Info ---
OpenGL version: 4.1.0 NVIDIA 260.19.21
OpenGL vendor: NVIDIA Corporation
OpenGL renderer: Quadro 6000/PCI/SSE2
OpenGL profile: Compatible
GLSL version: 4.10 NVIDIA via Cg compiler
Max texture size: 16384
Texture coords: 8
Texture conventional units: 4
Texture image units: 32
Anisotropic texture filter: YES, 16X
S3 Texture Compression: YES
Vertex Buffer Object: YES
Pixel Buffer Object: YES
Framebuffer Object: YES
Max vertex attributes: 16
Max varying floats: 60
Max fragment uniform components: 2048
Max vertex uniform components: 4096
Max elements vertices: 1048576
Max elements indices: 1048576
--- OpenGL Extensions ---
GL_ARB_blend_func_extended GL_ARB_color_buffer_float
GL_ARB_compatibility GL_ARB_copy_buffer
GL_ARB_depth_buffer_float GL_ARB_depth_clamp
GL_ARB_depth_texture GL_ARB_draw_buffers
GL_ARB_draw_buffers_blend GL_ARB_draw_indirect
GL_ARB_draw_elements_base_vertex GL_ARB_draw_instanced
GL_ARB_ES2_compatibility GL_ARB_explicit_attrib_location
GL_ARB_fragment_coord_conventions GL_ARB_fragment_program
GL_ARB_fragment_program_shadow GL_ARB_fragment_shader
GL_ARB_framebuffer_object GL_ARB_framebuffer_sRGB
GL_ARB_geometry_shader4 GL_ARB_get_program_binary
GL_ARB_gpu_shader5 GL_ARB_gpu_shader_fp64
GL_ARB_half_float_pixel GL_ARB_half_float_vertex
GL_ARB_imaging GL_ARB_instanced_arrays
GL_ARB_map_buffer_range GL_ARB_multisample
GL_ARB_multitexture GL_ARB_occlusion_query
GL_ARB_occlusion_query2 GL_ARB_pixel_buffer_object
GL_ARB_point_parameters GL_ARB_point_sprite
GL_ARB_provoking_vertex GL_ARB_robustness
GL_ARB_sample_shading GL_ARB_sampler_objects
GL_ARB_seamless_cube_map GL_ARB_separate_shader_objects
GL_ARB_shader_bit_encoding GL_ARB_shader_objects
GL_ARB_shader_precision GL_ARB_shader_subroutine
GL_ARB_shading_language_100 GL_ARB_shadow
GL_ARB_sync GL_ARB_tessellation_shader
GL_ARB_texture_border_clamp GL_ARB_texture_buffer_object
GL_ARB_texture_buffer_object_rgb32 GL_ARB_texture_compression
GL_ARB_texture_compression_bptc GL_ARB_texture_compression_rgtc
GL_ARB_texture_cube_map GL_ARB_texture_cube_map_array
GL_ARB_texture_env_add GL_ARB_texture_env_combine
GL_ARB_texture_env_crossbar GL_ARB_texture_env_dot3
GL_ARB_texture_float GL_ARB_texture_gather
GL_ARB_texture_mirrored_repeat GL_ARB_texture_multisample
GL_ARB_texture_non_power_of_two GL_ARB_texture_query_lod
GL_ARB_texture_rectangle GL_ARB_texture_rg
GL_ARB_texture_rgb10_a2ui GL_ARB_texture_swizzle
GL_ARB_timer_query GL_ARB_transform_feedback2
GL_ARB_transform_feedback3 GL_ARB_transpose_matrix
GL_ARB_uniform_buffer_object GL_ARB_vertex_array_bgra
GL_ARB_vertex_array_object GL_ARB_vertex_attrib_64bit
GL_ARB_vertex_buffer_object GL_ARB_vertex_program
GL_ARB_vertex_shader GL_ARB_vertex_type_2_10_10_10_rev
GL_ARB_viewport_array 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_bindable_uniform
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_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_EXTX_framebuffer_mixed_formats
GL_EXT_framebuffer_object 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_provoking_vertex
GL_EXT_rescale_normal GL_EXT_secondary_color
GL_EXT_separate_shader_objects GL_EXT_separate_specular_color
GL_EXT_shader_image_load_store 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_shared_exponent GL_EXT_texture_sRGB
GL_EXT_texture_swizzle GL_EXT_timer_query
GL_EXT_transform_feedback2 GL_EXT_vertex_array
GL_EXT_vertex_array_bgra GL_EXT_vertex_attrib_64bit
GL_IBM_rasterpos_clip GL_IBM_texture_mirrored_repeat
GL_KTX_buffer_region GL_NV_blend_square
GL_NV_conditional_render GL_NV_copy_depth_to_color
GL_NV_copy_image GL_NV_depth_buffer_float
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_gpu_program4_1
GL_NV_gpu_program5 GL_NV_gpu_program_fp64
GL_NV_gpu_shader5 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_parameter_buffer_object2 GL_NV_pixel_data_range
GL_NV_point_sprite GL_NV_primitive_restart
GL_NV_register_combiners GL_NV_register_combiners2
GL_NV_shader_buffer_load GL_NV_texgen_reflection
GL_NV_texture_barrier GL_NV_texture_compression_vtc
GL_NV_texture_env_combine4 GL_NV_texture_expand_normal
GL_NV_texture_multisample GL_NV_texture_rectangle
GL_NV_texture_shader GL_NV_texture_shader2
GL_NV_texture_shader3 GL_NV_transform_feedback
GL_NV_transform_feedback2 GL_NV_vdpau_interop
GL_NV_vertex_array_range GL_NV_vertex_array_range2
GL_NV_vertex_attrib_integer_64bit GL_NV_vertex_buffer_unified_memory
GL_NV_vertex_program GL_NV_vertex_program1_1
GL_NV_vertex_program2 GL_NV_vertex_program2_option
GL_NV_vertex_program3 GL_NV_video_capture
GL_NVX_conditional_render GL_NVX_gpu_memory_info
GL_SGIS_generate_mipmap GL_SGIS_texture_lod
GL_SGIX_depth_texture GL_SGIX_shadow
GL_SUN_slice_accum
PatchesContainer::PatchesContainer: working dir: ./data/patches/pick_height_testing_png/
PatchesContainer::loadPatchesFromWorkingDir ignoring file = data/patches/pick_height_testing_png/.svn
Patch::initialize(): name = data/patches/pick_height_testing_png/patch01-position=20x20-maxHeight=1.0.png
width = 50
height = 50
depth = 0
format = IF_LUMINANCE
type = IT_UNSIGNED_BYTE
pitch = 50
bytealign = 1
Patch::initialize(): name = data/patches/pick_height_testing_png/patch02-position=20x2-maxHeight=1.5.png
width = 20
height = 20
depth = 0
format = IF_LUMINANCE
type = IT_UNSIGNED_BYTE
pitch = 20
bytealign = 1
Found matching densitymap ./data/density_maps/pick_height_testing_png.png
loading height field image
name = ./data/horizons/pick_height_testing.png
width = 200
height = 200
depth = 0
format = IF_LUMINANCE
type = IT_UNSIGNED_BYTE
pitch = 200
bytealign = 1
name = ./data/textures/tesselation_palette_blue_red.png
width = 300
height = 0
depth = 0
format = IF_RGB
type = IT_UNSIGNED_BYTE
pitch = 900
bytealign = 1
GL_MAX_TESS_EVALUATION_TEXTURE_IMAGE_UNITS: 32
for(int i = 0; i < someUniform; i++)
{
texture(Patches[i], texCoord);
}
texture(Patches[positionOfSomeVertex * uniformScaleFactor], texCoord);