如何绘制圆/椭圆并使用“模型-视图-投影”进行变换。
我用glDrawElements(GL_TRIANGLES, ...)
在矩形中绘制一个椭圆。
我制作了一个着色器,它可以工作,但是如何对其进行转换?
顶点着色器
#version 330 core
layout (location = 0) in vec2 position;
void main()
{
gl_Position = vec4(position, 0.0, 1.0);
}
片段着色器
#version 400 core
uniform mat4 u_mvp;
uniform vec2 u_resolution;
out vec4 color;
float pow2(float x) { return x * x; }
void main()
{
vec2 d = (gl_FragCoord.xy / u_resolution.xy) * 2 - vec2(1.0);
vec4 pos = vec4(d, 0.0, 0.0);
vec4 center = vec4(0.0);
float r = distance(pos, center);
r = step(0.5, r);
color = vec4(0.7f, 0.8f, 0.1f, 1.0f - r);
}
如何添加MVP支持?。>
如何绘制圆/椭圆并使用“模型-视图-投影”进行变换。我使用glDrawElements(GL_TRIANGLES,...)在矩形中绘制椭圆。我制作了一个着色器,它可以工作,但是如何对其进行转换? ...
有不同的选择,可以实现您想要的。它们的基础是创建一个与射线和球面相交的函数。以下算法取自Peter Shirley's书Ray Tracing in One Weekend。光线由origin
和direction
定义。球体由center
点和radius
定义: