美文网首页
着色器(练习)

着色器(练习)

作者: laochonger | 来源:发表于2019-10-15 08:51 被阅读0次
  • Q:修改顶点着色器让三角形上下颠倒:参考解答

  • A:直接修改顶点数组

  • Q:使用uniform定义一个水平偏移量,在顶点着色器中使用这个偏移量把三角形移动到屏幕右侧:参考解答

  • A:

    • 在cpp文件中的绘制部分,设置

    •  float offset = 0.5f; 
       ourShader.setFloat("xOffset", offset);
      
      
    • 顶点着色器

    •  #version 330 core layout (location = 0) in vec3 aPos; 
       layout (location = 1) in vec3 aColor; 
       out vec3 ourColor; 
       uniform float xOffset; 
       void main() { 
           gl_Position = vec4(aPos.x + xOffset, aPos.y, aPos.z, 1.0); // add the xOffset to the x position of the vertex position 
           ourColor = aColor; 
       }
      
      
  • Q:使用out关键字把顶点位置输出到片段着色器,并将片段的颜色设置为与顶点位置相等(来看看连顶点位置值都在三角形中被插值的结果)。做完这些后,尝试回答下面的问题:为什么在三角形的左下角是黑的?:参考解答

  • A:

    • 顶点着色器

    •  #version 330 core
       layout (location = 0) in vec3 aPos;
       layout (location = 1) in vec3 aColor;
      
       // out vec3 ourColor;
       out vec3 ourPosition;
      
       void main()
       {
           gl_Position = vec4(aPos, 1.0); 
           // ourColor = aColor;
           ourPosition = aPos;
       }
      
      
    • 片段着色器

    •  #version 330 core
       out vec4 FragColor;
       // in vec3 ourColor;
       in vec3 ourPosition;
      
       void main()
       {
           FragColor = vec4(ourPosition, 1.0);    // note how the position value is linearly interpolated to get all the different colors
       }
      
      
    • 其中颜色属性在后面虽然被设置,但是没有用到

    • 效果

    • ![_CR1%24171MAS3Y%L]59(70.png](https://img.haomeiwen.com/i8820600/67616d0a011fa212.png?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)

    • 想一想:我们片段的颜色输出等于的(内插)坐标三角形。三角形左下角的坐标是什么?是(-0.5f,-0.5f,0.0f)。 因为x、y值为负,它们实际被设置为0.0f。这种情况一直发生到三角形中间,因为从该点开始,值将再次被正插值。 0.0f的值当然是黑色的,这解释了三角形的黑色面。

相关文章

  • 着色器(练习)

    Q:修改顶点着色器让三角形上下颠倒:参考解答 A:直接修改顶点数组 Q:使用uniform定义一个水平偏移量,在顶...

  • OpenGL学习--着色器使用

    单元着色器 平面着色器 上色着色器 默认光源着色器 点光源着色器 纹理替换矩阵着色器 纹理调整着色器 纹理光源着色器

  • OpenGL ES 自定义着色器

    着色器 创建着色器 删除着色器 编译着色器 将着色器的源代码附着到着色器对象上。 开始编译着色器源代码。 创建与链...

  • OpenGL存储着色器

    1、初始化 2、存储着色器种类 单元着色器 平面着色器 上色着色器 默认光源着色器 点光源着色器 纹理替换矩阵着色...

  • OpenGL 固定管线下的着色器

    OpenGL 固定管线下为开发者提供了几种着色器:单元着色器、平面着色器、上色着色器、默认光源着色器、点光源着色器...

  • Unity3Dshader中的RenderType

    Opaque: 用于大多数着色器(法线着色器、自发光着色器、反射着色器以及地形的着色器)。Transparent:...

  • OpenGL的一些学习

    资料来源:逻辑教育 OpenGL 固定管线中常见的几种着色器 单元着色器 平面着色器 上色着色器 默认光源着色器 ...

  • 《WebGL 编程指南》笔记 —— 第九章 层次模型

    着色器对象与程序对象着色器对象:着色器对象管理一个顶点着色器或一个片元着色器。每一个着色器都有一个着色器对象。程序...

  • WebGL 3D概念讲解(着色器)

    着色器 1、顶点着色器 2、片元着色器

  • [OpenGL] - 图元

    1.存储着色器 GLShaderMananger 1.1 单位着色器 1.2 平面着色器 1.3 上色着色器 1....

网友评论

      本文标题:着色器(练习)

      本文链接:https://www.haomeiwen.com/subject/qfsjmctx.html