亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Android LibGDX 著色器兼容性

Android LibGDX 著色器兼容性

紅顏莎娜 2023-11-01 17:04:32
我正在使用 Android 版 LibGDX。我的片段和頂點著色器如下片段著色器:#ifdef GL_ES#define LOW lowp#define MED mediump#define HIGH highpprecision mediump float;#else#define MED#define LOW#define HIGH#endifvarying vec4 v_color;varying vec2 v_texCoords;uniform sampler2D u_texture;uniform vec2 oneOverResolution;vec2 frgCOverRes;void main() {   frgCOverRes = gl_FragCoord.xy*oneOverResolution.xy;   frgCOverRes.y = -frgCOverRes.y+1;   vec4 c = texture2D(u_texture, frgCOverRes);   gl_FragColor = c;}頂點著色器:attribute vec4 a_position;attribute vec4 a_color;attribute vec2 a_texCoord0;uniform mat4 u_projTrans;varying vec4 v_color;varying vec2 v_texCoords;void main() {    v_color = a_color;    v_texCoords = a_texCoord0;    gl_Position = u_projTrans * a_position;}但我讀到highp與某些設備不兼容。而且也沒有使用過(中、低p也沒有使用過)。所以我要將片段著色器更改為以下代碼:#ifdef GL_ESprecision mediump float;#endifvarying vec4 v_color;varying vec2 v_texCoords;uniform sampler2D u_texture;uniform vec2 oneOverResolution;vec2 frgCOverRes;void main() {   frgCOverRes = gl_FragCoord.xy*oneOverResolution.xy;   frgCOverRes.y = -frgCOverRes.y+1.0;   vec4 c = texture2D(u_texture, frgCOverRes);   gl_FragColor = c;}我使用 9 作為 minSdkVersion。我已經在模擬器和我的手機(華為j6ii)中測試了這段代碼。但對其他設備有疑問。這個片段著色器是否與所有設備兼容?
查看完整描述

1 回答

?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

這個片段著色器與所有設備兼容嗎?

它應該適用于任何支持 OpenGL ES 2.0 及以上版本的設備。

一個觀察結果是,對每個像素執行此操作的成本比實際需要的要高:

frgCOverRes = gl_FragCoord.xy * oneOverResolution.xy;
frgCOverRes.y = -frgCOverRes.y + 1.0;

為什么不首先上傳正確的紋理坐標呢?y 軸翻轉應該是可預測的。(如果失敗,最好在每個頂點的頂點著色器中糾正它,而不是每個片段)。


查看完整回答
反對 回復 2023-11-01
  • 1 回答
  • 0 關注
  • 113 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號