第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Opengl - 極端的紋理質(zhì)量損失

Opengl - 極端的紋理質(zhì)量損失

qq_遁去的一_1 2023-06-08 19:41:36
我正在嘗試紋理球體。我的頂點(diǎn)著色器:attribute vec3 a_position;attribute vec3 a_normal;attribute vec3 a_texCoord0;uniform mat4 model;uniform mat4 view;uniform mat4 projection;uniform sampler2D u_texture;varying vec3 fragPos;varying vec3 normal;varying vec3 color;void main(){? ? gl_Position = projection * view * model * vec4(a_position, 1.0);? ? fragPos = vec3(model * vec4(a_position, 1.0));? ? normal = a_normal;? ? if(a_texCoord0.x > 50){? ? ? ? color = vec3(1f, 0.0f, 0.0f);? ? } else {? ? ? ? color = texture(u_texture, a_texCoord0);? ? }}我的片段著色器:#ifdef GL_ES? ? precision mediump float;#endifvarying vec3 normal;varying vec3 color;varying vec3 fragPos;uniform vec3 lightPos;uniform vec3 lightColor;void main(){? ? // Ambient? ? float ambientStrength = 0.1;? ? vec3 ambient = ambientStrength * lightColor;? ? // Diffuse? ? vec3 norm = normalize(normal);? ? vec3 lightDir = normalize(lightPos - fragPos);? ? float diff = max(dot(norm, lightDir), 0.0);? ? vec3 diffuse = diff * lightColor;? ? //vec3 result = (ambient + diffuse) * color;? ? vec3 result = color;? ? gl_FragColor = vec4(result, 1.0);}結(jié)果,我得到了可怕的紋理質(zhì)量損失。這是原始紋理和我在球體上得到的(這里只是立方體貼圖的一部分,其他面是紅色的)。我猜想這可能與構(gòu)建方法(來(lái)自二十面體)和紋理(使用立方體貼圖)的差異有關(guān)。但它可以解釋紋理邊緣不均勻,但不能解釋如此可怕的質(zhì)量損失。有人可以向我解釋這里發(fā)生了什么嗎?
查看完整描述

1 回答

?
人到中年有點(diǎn)甜

TA貢獻(xiàn)1895條經(jīng)驗(yàn) 獲得超7個(gè)贊

發(fā)生這種情況是因?yàn)槟陧旤c(diǎn)著色器中對(duì)紋理進(jìn)行采樣,這意味著您只能在每個(gè)三角形的角上獲得三種顏色。其他像素被插值。


為了獲得更好的質(zhì)量,應(yīng)該將紋理采樣移動(dòng)到片段著色器,并且應(yīng)該插值 uv 坐標(biāo)而不是顏色:


頂點(diǎn)著色器:


attribute vec3 a_position;

attribute vec3 a_normal;

attribute vec3 a_texCoord0;

uniform mat4 model;

uniform mat4 view;

uniform mat4 projection;


varying vec3 fragPos;

varying vec3 normal;

varying vec2 texcoord0;


void main()

{

    gl_Position = projection * view * model * vec4(a_position, 1.0);

    fragPos = vec3(model * vec4(a_position, 1.0));

    normal = a_normal;

    texcoord0 = a_texCoord0;

}

片段著色器:


varying vec3 normal;

varying vec2 texcoord0;

varying vec3 fragPos;


uniform sampler2D u_texture;

uniform vec3 lightPos;

uniform vec3 lightColor;


void main()

{

    vec3 color = texture(u_texture, texcoord0).rgb;


    // Ambient

    float ambientStrength = 0.1;

    vec3 ambient = ambientStrength * lightColor;


    // Diffuse

    vec3 norm = normalize(normal);

    vec3 lightDir = normalize(lightPos - fragPos);

    float diff = max(dot(norm, lightDir), 0.0);

    vec3 diffuse = diff * lightColor;


    //vec3 result = (ambient + diffuse) * color;

    vec3 result = color;

    gl_FragColor = vec4(result, 1.0);

}


查看完整回答
反對(duì) 回復(fù) 2023-06-08
  • 1 回答
  • 0 關(guān)注
  • 173 瀏覽
慕課專(zhuān)欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)