簡體   English   中英

iOS上的OpenGL ES2.0中的多紋理Point Sprites?

[英]Multi-textured Point Sprites in OpenGL ES2.0 on iOS?

我正在嘗試使用OpenGL ES 2.0為iphone應用程序制作一個多紋理點精靈。 我在網上找不到任何這樣的例子,它似乎沒有起作用。 是否存在一些內置限制,當使用GL_POINTS模式進行點精靈時,gl_PointCoord不能用於多個紋理?

uniform sampler2D tex;    
uniform sampler2D blur_tex;
vec4 texPixel = texture2D( tex, gl_PointCoord ); 
vec4 blurPixel = texture2D( blur_tex, gl_PointCoord );

我確定我正確地傳遞紋理,因為我可以在TRIANGLE_STRIP模式下進行多紋理處理,但我希望使用點精靈來加快速度。

如果有可能 ,到工作代碼示例的鏈接將超級有益的。 謝謝!

編輯:

這是我如何將紋理傳遞到我的着色器。 當我處於TRIANGLE或TRIANGLE_STRIP模式時,這可以讓我進行多紋理化。

//pass in position and tex_coord attributes...

//normal tex
glActiveTexture(0);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, tex0);
glUniform1i(SAMPLER_0_UNIFORM, 0);

//blur tex
glActiveTexture(1);
glEnable(GL_TEXTURE_2D);
glBindTexture(GL_TEXTURE_2D, tex1);
glUniform1i(SAMPLER_1_UNIFORM, 1);
//draw arrays...

但是,如果我使用POINTS模式,那么我永遠不會看到第二個紋理。 也就是說,參考上面的着色器代碼,我是否這樣做

gl_FragColor = texPixel;

要么

gl_FragColor = blurPixel;

我看到了相同的紋理。 這看起來很奇怪。 我的猜測是你不能對點精靈進行多紋理處理,不知何故有兩個活動紋理或兩次調用gl_PointCoord會導致問題。 但我希望我錯了。 因此,如果某人有一個簡單的多紋理示例,在OpenGL ES 2.0中使用點精靈,我會很高興看到該代碼!

編輯2:

頂點着色器:

attribute vec4 position;

void main() {
  gl_PointSize = 15.0;   
  gl_Position = position;
}

片段着色器:

precision mediump float; 

uniform sampler2D tex;    
uniform sampler2D blur_tex;

void main() {
  vec4 texPixel = texture2D( tex, gl_PointCoord ); 
  vec4 blurPixel = texture2D( blur_tex, gl_PointCoord );

  //these both do the same thing even though I am passing in two different textures?!?!?!?

  //gl_FragColor = texPixel;
  gl_FragColor = blurPixel;
}

主程序中有拼寫錯誤。

傳遞給glActiveTexture的正確參數是GL_TEXTURE0,GL_TEXTURE1,...

請注意,GL_TEXTURE0,GL_TEXTURE1的值不為0,1等。

由於您將無效值傳遞給glActiveTexture,因此該函數將失敗,因此活動紋理將始終為默認值(可能為0),所有更改將在0位置進行紋理處理。

來源在我的情況下,有一個點混合

可能的問題是不存在的參數

glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_WRAP_S, GL_CLAMP_TO_EDGE );
glTexParameteri ( GL_TEXTURE_2D, GL_TEXTURE_WRAP_T, GL_CLAMP_TO_EDGE );

我覺得發布這個可能為時已晚。

您的代碼中存在兩個問題。 一個是薩蒂亞卡姆指出的那個。 另一個問題是你不應該使用glUniform1f。 右邊一個是glUniform1i。 尾部的參數是f或i,表示浮點數或整數。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM