0

Tegra 250 T20を搭載したAndroid Galaxy Tab 10.1用のアプリを開発しています。for() ループを持つ GLSL でシェーダーを作成しています。いくつかの条件下で for() ループを早期に終了させたい。

私が見ているのは、シェーダー コンパイラがループを巻き戻し、巻き戻されたコード全体が実行されているため、パフォーマンスが低下していることです。

ここで質問があります。Tegra 250 T20 は実行フロー命令をサポートしていますか? もしそうなら、実際にそれらを利用するようコンパイラに指示するにはどうすればよいでしょうか。

すべての返信に感謝します。

ETA: glGetString(GLES20.GL_SHADING_LANGUAGE_VERSION) は「OpenGL ES GLSL 1.00」を返します。

また、GLSL で処理できない場合、ARB アセンブリ言語で自分で作成するにはどうすればよいですか?

ETA2: GL_EXTENSIONS has this: GL_NV_platform_binary GL_OES_rgb8_rgba8 GL_OES_EGL_sync GL_OES_fbo_render_mipmap GL_NV_depth_nonlinear GL_NV_draw_path GL_NV_texture_npot_2D_mipmap GL_OES_EGL_image GL_OES_EGL_image_external GL_OES_vertex_half_float GL_NV_framebuffer_vertex_attrib_array GL_NV_coverage_sample GL_OES_mapbuffer GL_ARB_draw_buffers GL_EXT_Cg_shader GL_EXT_packed_float GL_OES_texture_half_float GL_OES_texture_float GL_EXT_texture_array GL_OES_compressed_ETC1_RGB8_texture GL_EXT_texture_compression_latc GL_EXT_texture_compression_dxt1 GL_EXT_texture_compression_s3tc GL_EXT_texture_filter_anisotropic GL_NV_get_tex_image GL_NV_read_buffer GL_NV_shader_framebuffer_fetch GL_NV_fbo_color_attachments GL_EXT_bgra GL_EXT_texture_format_BGRA8888 GL_EXT_unpack_subimage GL_NV_texture_compression_s3tc_update

4

2 に答える 2

1

ほとんどの組み込みプラットフォーム (バージョン 120 のみをサポートするすべてのプラットフォームを信じています) では、GLSL はいかなる種類の動的ループもサポートしていません。例: 変数を宣言して、ループがループする頻度を決定することはできません。

唯一の可能性は、該当する場合、いくつかの条件付きブロックに分割することです。

于 2012-03-20T17:19:17.443 に答える
1

Tegra 頂点またはフラグメント シェーダー ユニットの近くでは、動的制御フローがサポートされます。コンパイル時にループを展開できるようにする必要があります。他のほとんどの OpenGL ES 2.0 実装は動的制御フローをサポートしていますが、標準では必要ありません。

于 2013-03-20T10:43:26.307 に答える