如何使用mvp在opengl中绘制椭圆

问题描述 投票:2回答:1

如何绘制圆/椭圆并使用“模型-视图-投影”进行变换。

我用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,...)在矩形中绘制椭圆。我制作了一个着色器,它可以工作,但是如何对其进行转换? ...

c++ opengl glsl shader
1个回答
0
投票

有不同的选择,可以实现您想要的。它们的基础是创建一个与射线和球面相交的函数。以下算法取自Peter Shirley'sRay Tracing in One Weekend。光线由origindirection定义。球体由center点和radius定义:

© www.soinside.com 2019 - 2024. All rights reserved.