gpt4 book ai didi

c++ - opengl 中 3d 空间平面上的程序网格

转载 作者:行者123 更新时间:2023-12-03 07:02:02 24 4
gpt4 key购买 nike

我有一个用 c++ 编写的简单图形程序,它使用 opengl 进行渲染。我有一个在原点绘制的平面,我想向它添加程序网格纹理。在我当前的片段着色器中,我只做一些光照计算:

#version 330 core
out vec4 FragColor;

in vec3 Normal;
in vec2 TexCoord;
in vec3 FragPos;

uniform vec3 objectColor;
uniform vec3 lightColor;
uniform vec3 lightPos;


void main()
{

float ambientStrength = 0.5;
vec3 ambient = ambientStrength * lightColor;

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) * objectColor) * 0.5) ;
FragColor = vec4(result, 1.0);
}


我的问题是修改片段着色器是否是在我的平面上拥有程序网格的最佳方式,如果是这样,我应该如何编写这样的着色器?

最佳答案

最简单的方法是使用三角函数。由于您已经在传递纹理坐标。
设颜色强度为 max(cos(u), cos(v)) .那会给你一个开始。然后你应该使用 cos 公式来得到你想要的结果(即乘以一些系数并对其施加幂,直到它看起来完全符合你的需要)。

关于c++ - opengl 中 3d 空间平面上的程序网格,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64699381/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com