簡體   English   中英

帶有GLKit透明紋理的OpenGL ES 2.0

[英]OpenGL ES 2.0 w/ GLKit Transparent Textures

我正在嘗試應用紋理(中間帶有黑色箭頭的128x128,其余紋理是透明的)。 我的模型包含也具有顏色數據的頂點。 在應用紋理之前,該模型看起來正確,每個頂點包含正確的顏色信息。 一旦應用了紋理,該紋理就會正確顯示,隨處可見箭頭,其中應透明的部分是透明的,而模型也是透明的。 我希望紋理位於模型的“頂部”,您應該能夠透視紋理的透明部分,並在下面看到模型的顏色。 請參閱下面的內容。 我也添加了glEnable(GL_BLEND)和glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA)。

如下所示,第一張圖像帶有紋理,第二張圖像沒有紋理。 我希望能夠在第一張圖像上看到第二張圖像的顏色數據。 有什么問題

帶有紋理沒有質地

混合功能通常用於重疊半透明多邊形。 根據您的描述,我認為這無關緊要。

聽起來您好像要從頂點顏色和紋理顏色的alpha加權平均值中得出輸出顏色。 在看起來像這樣的着色器中:

gl_FragColor = vec4(
  vertexColor.a * vertexColor.rgb + textureColor.a * textureColor.rgb, 1.0);

使用GLKit,您可以使用GLKBaseEffect達到所需的效果,但是我沒有嘗試過。 文檔指出,除了設置紋理坐標外,還必須啟用GLKVertexAttribColor 給定您的圖像,看來您已經完成了,因此您可能需要編寫自己的着色器。

使用GLKit設置片段顏色的能力取決於在GLKEffectPropertyTexture上使用envMode屬性。 這是我之前發布的評論,但現在將其標記為答案。

暫無
暫無

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

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