[
最新
] ■[
前年
|
前月
|
前日
|
2012/10/27
|
翌日
|
翌月
|
翌年
] ■表示[
全て
|
@gorry5のみ
|
個別
]
■グループ[
Mention
] ■その他[
Twitter:@gorry5
][
日記
] ■[
twtlog 20100921a
]
10/27 15:53
(
@gorry5
) そしてやっと判明した。たぶんICONIA TAB A500のGLES2のバグな気がする
10/27 15:57
(
@gorry5
)
URL:www.khronos.org
によると、「glLinkProgram()したあと、glAttachShader()でアタッチされていたシェーダオブジェクトはglDetachShader()してもよい」ということになっている
10/27 16:00
(
@gorry5
) しかしICONIA TAB A500のGLES2ドライバだと、glDetachShader()しちゃったプログラムをglUseProgram()するとその後のglDrawElements()の中でクラッシュする
10/27 16:06
(
@gorry5
) ちょっとあとで検証プログラム書いておくか…
10/27 16:10
(
@gorry5
) 本来、デタッチしちゃいけないならglUseProgram()でエラーが出ないとおかしい。そこでエラーが出ないで実際にそのプログラムで描画しようとしてクラッシュするんだからタチが悪い
--------
10/27 16:17
(
@gorry5
) ちなみにglDeleteShader()しちゃう分には正常に動く。これは「OpenGL ES 2.0プログラミングガイド
URL:www.amazon.co.jp
」に実コードがある。恐らくKhronosのサンプルコードに含まれているんじゃないか
--------
10/27 16:29
(
@gorry5
) 追加条件がわかった。アタッチするシェーダはVertexとFragmentの2種類があるんだが、このうちFragmentだけをデタッチすると異状が発生する。Vertexだけ、あるいは両方ともデタッチすると異状は出ない
10/27 16:32
(
@gorry5
) 本来両方ともデタッチしたほうがいいところを片方しかしていなかったのは当方のミスではある。まあ普通は「次のプログラム用に新しいシェーダをアタッチすると古いのはデタッチされる」ので、こんなバグは気づきにくいかもしれない
10/27 16:36
(
@yunyundetective
)
@gorry5
Androidは大変ですのう(^^;
(mira)
10/27 17:11
(
@gorry5
)
@motoyuki
猪木だったらあるいは :D
10/27 17:44
(
@gorry5
) A500、「Vertexだけ、あるいは両方ともデタッチすると異状は出ない」って間違いだった。やっぱりおかしい
■グループ[
Mention
] ■その他[
Twitter:@gorry5
][
日記
] ■[
twtlog 20100921a
]
[
最新
] ■[
前年
|
前月
|
前日
|
2012/10/27
|
翌日
|
翌月
|
翌年
] ■表示[
全て
|
@gorry5のみ
|
個別
]