iPhoneのOpenGL ES 2.0でシンプルなテクスチャ付きクワッドをレンダリングしようとしています。ジオメトリは結構です、私は私のシェーダにソリッドカラーを使用している場合、私は、予想されるクワッドを得る:OpenGL ES 2.0テクスチャ
gl_FragColor = vec4 (1.0, 0.0, 0.0, 1.0);
そして、私はテクスチャをレンダリングする場合、私は予想勾配を取得するには、直接座標:
gl_FragColor = vec4 (texCoord.x, texCoord.y, 0.0, 1.0);
画像データは、UIImageからロードされた1024×1024内に収まるように拡大縮小などのような風合いにロードされます。
glGenTextures (1, &_texture); glBindTexture (GL_TEXTURE_2D, _texture); glTexImage2D(GL_TEXTURE_2D, 0, GL_RGBA, width, height, 0, GL_RGBA, GL_UNSIGNED_BYTE, data);
width
、height
、そして内容data
のすべてが正しく、デバッガで調べられます。
私はテクスチャを使用するために私のフラグメントシェーダを変更する場合:
gl_FragColor = texture2D (tex, texCoord);
を...とテクスチャを結合して、そのようにレンダリング:
glActiveTexture (GL_TEXTURE0); glBindTexture (GL_TEXTURE_2D, _texture); // this is unnecessary, as it defaults to 0, but for completeness... GLuint texLoc = glGetUniformLocation(_program, "tex"); glUniform1i(texLoc, 0); glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
...私は何を取得。黒いクワッド。 glGetError()
はエラーを返さず、glIsTexture(_texture)
がtrueを返します。
私はここで間違っていますか?私は何度もオンラインで見つけられたすべての例を何度も繰り返してきましたが、みんなが私のように正確にやり遂げています。そして、デバッガはさまざまなGL関数に自分のパラメータを示しています。
ちょうどあなたのように、私は提示されたコードで明らかに間違ったことを見ることができません。もしあなたが喜んでいるなら、プロジェクト全体をどこかに投稿できますか?本当に面白いことがいくつかあるはずです。 – Tommy
私はプロジェクト全体を投稿したくありませんが、OpenGLコードは自己完結型のUIViewサブクラスにあります: – Xtapolapocetl
http://dl.dropbox.com/u/163839/FilteredImageView/FilteredImageView.h – Xtapolapocetl