为什么矩形有两种不同的阴影

首脑

我正在绘制一个基本的矩形。

void renderQuad()
{
    if (quadVAO == 0)
    {
        float quadVertices[] = { // vertex attributes for a quad that fills the entire screen in Normalized Device Coordinates.
        // positions   // texCoords
        -1.0f,  1.0f,  0.0f, 1.0f,
        -1.0f, -1.0f,  0.0f, 0.0f,
         1.0f, -1.0f,  1.0f, 0.0f,

        -1.0f,  1.0f,  0.0f, 1.0f,
         1.0f, -1.0f,  1.0f, 0.0f,
         1.0f,  1.0f,  1.0f, 1.0f
        };
        //  VAO
        glGenVertexArrays(1, &quadVAO);
        glGenBuffers(1, &quadVBO);
        glBindVertexArray(quadVAO);
        glBindBuffer(GL_ARRAY_BUFFER, quadVBO);
        glBufferData(GL_ARRAY_BUFFER, sizeof(quadVertices), &quadVertices, GL_STATIC_DRAW);
        glEnableVertexAttribArray(0);
        glVertexAttribPointer(0, 2, GL_FLOAT, GL_FALSE, 4 * sizeof(float), (void*)0);
        glEnableVertexAttribArray(1);
        glVertexAttribPointer(1, 2, GL_FLOAT, GL_FALSE, 4 * sizeof(float), (void*)(2 * sizeof(float)));
    }
    glBindVertexArray(quadVAO);
    glDrawArrays(GL_TRIANGLE_STRIP, 0, 6);
    glBindVertexArray(0);
}

这是我正在绘制矩形的渲染功能。

void RenderThread()
{   
    Shader shader("C:\\Shaders\\Screen\\Vert.txt", "C:\\Shaders\\Screen\\Frag.txt");
    glDisable(GL_DEPTH_TEST);
    glEnable(GL_BLEND);
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
    shader.use();
    while (!glfwWindowShouldClose(window))
    {
        glClearColor(0.0, 0.0, 0.0, 0.0);
        glClear(GL_COLOR_BUFFER_BIT );
        processInput(window);
        renderQuad();       
        glfwSwapBuffers(window);
        glfwPollEvents();
    }
}

这些是着色器。

顶点着色器

#version 330 core
layout( location = 0 ) in vec2 aPos;
layout( location = 1) in vec2 aTexCoord;

out vec2 TexCoord;

void main()
{
   TexCoord = aTexCoord;
   gl_Position =  vec4( aPos , 0.0 ,  1.0 );
}

片段着色器

#version 330 core
in vec2 TexCoord;
out vec4 OutColor;
void main()
{

   OutColor = vec4( 0.5 , 0.0 , 0.0 , 0.3);
}

用两个不同的阴影绘制矩形。

在此处输入图片说明

如果我删除此行“ glBlendFunc(GL_SRC_ALPHA,GL_ONE_MINUS_SRC_ALPHA);” 比它正确绘制。

拉比德76

因为您使用了错误的原始类型。如果要绘制2个三角形图元(按6个坐标),则必须使用三角形图元类型 GL_TRIANGLES

glDrawArrays(GL_TRIANGLE_STRIP, 0, 6);

glDrawArrays(GL_TRIANGLES, 0, 6); 

对于2个三角形乘以GL_TRIANGLE_STRIP,四个坐标就足够了:

float quadVertices[] = {
        // positions   // texCoords
        -1.0f,  1.0f,  0.0f, 1.0f,
        -1.0f, -1.0f,  0.0f, 0.0f,

         1.0f,  1.0f,  1.0f, 1.0f,
         1.0f, -1.0f,  1.0f, 0.0f,
};
glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

为什么吊索配置有两种不同的格式

来自分类Dev

为什么有两种SortedList?

来自分类Dev

如果这两种Perl书写风格有什么区别,为什么结果不同?

来自分类Dev

在Visual Studio中的链接库,为什么有两种不同的方式?

来自分类Dev

为什么在C中有两种初始化指针的不同方法

来自分类Dev

为什么32位和64位地址有两种不同的长度?

来自分类Dev

为什么这两种向量加法方法有所不同?

来自分类Dev

为什么两种多方法程序都有不同的结果

来自分类Dev

为什么32位和64位地址有两种不同的长度?

来自分类Dev

为什么滚动条具有两种不同的行为?

来自分类Dev

启动服务的两种不同方式。为什么?

来自分类Dev

Java递归提供两种不同的结果。为什么?

来自分类Dev

为什么两种计算的结果不同?

来自分类Dev

为什么片段之间有两种导航方式?

来自分类Dev

为什么Chrome有两种编码设置?

来自分类Dev

为什么在Gatsby的两种不同布局上无法具有两个StaticQuery元素的相同名称?

来自分类Dev

为什么在这两种情况下,underscore.reduce的行为有所不同?

来自分类Dev

为什么在这两种情况下,underscore.reduce的行为有所不同?

来自分类Dev

为什么在kde中显示桌面(带有alt标签)会交替显示两种不同的东西?

来自分类Dev

为什么 Arduino 对 Mega 2560 和 ESP8266 的字符指针处理有两种不同的行为?

来自分类Dev

为什么在这两种命令执行情况下会有不同?

来自分类Dev

两种说法有何不同?

来自分类Dev

为什么这两种构造数组的不同方式会产生不同的行为?

来自分类Dev

C ++类中的两种不同的变量初始化。有什么不同?

来自分类Dev

为什么将枚举数组强制转换为两种不同的IEnumerable <T>类型?

来自分类Dev

为什么这两种访问C ++映射对部分的方式不同

来自分类Dev

为什么postgres为相同的间隔值显示两种不同的格式?

来自分类Dev

为什么Matlab中max的这两种实现方式不同?

来自分类Dev

为什么这两种旋转方式给我不同的用户体验?

Related 相关文章

  1. 1

    为什么吊索配置有两种不同的格式

  2. 2

    为什么有两种SortedList?

  3. 3

    如果这两种Perl书写风格有什么区别,为什么结果不同?

  4. 4

    在Visual Studio中的链接库,为什么有两种不同的方式?

  5. 5

    为什么在C中有两种初始化指针的不同方法

  6. 6

    为什么32位和64位地址有两种不同的长度?

  7. 7

    为什么这两种向量加法方法有所不同?

  8. 8

    为什么两种多方法程序都有不同的结果

  9. 9

    为什么32位和64位地址有两种不同的长度?

  10. 10

    为什么滚动条具有两种不同的行为?

  11. 11

    启动服务的两种不同方式。为什么?

  12. 12

    Java递归提供两种不同的结果。为什么?

  13. 13

    为什么两种计算的结果不同?

  14. 14

    为什么片段之间有两种导航方式?

  15. 15

    为什么Chrome有两种编码设置?

  16. 16

    为什么在Gatsby的两种不同布局上无法具有两个StaticQuery元素的相同名称?

  17. 17

    为什么在这两种情况下,underscore.reduce的行为有所不同?

  18. 18

    为什么在这两种情况下,underscore.reduce的行为有所不同?

  19. 19

    为什么在kde中显示桌面(带有alt标签)会交替显示两种不同的东西?

  20. 20

    为什么 Arduino 对 Mega 2560 和 ESP8266 的字符指针处理有两种不同的行为?

  21. 21

    为什么在这两种命令执行情况下会有不同?

  22. 22

    两种说法有何不同?

  23. 23

    为什么这两种构造数组的不同方式会产生不同的行为?

  24. 24

    C ++类中的两种不同的变量初始化。有什么不同?

  25. 25

    为什么将枚举数组强制转换为两种不同的IEnumerable <T>类型?

  26. 26

    为什么这两种访问C ++映射对部分的方式不同

  27. 27

    为什么postgres为相同的间隔值显示两种不同的格式?

  28. 28

    为什么Matlab中max的这两种实现方式不同?

  29. 29

    为什么这两种旋转方式给我不同的用户体验?

热门标签

归档