LearnOpenGl练习题-着色器

LearnOpenGl练习题-着色器

题目地址:着色器 - LearnOpenGL CN

题目一:修改顶点着色器让三角形上下颠倒:

#version 330 core
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec3 aColor;
out vec3 ourColor;
void main()
{
    gl_Position = vec4(aPos, 1.0); 
    gl_Position.y *= -1;
    ourColor = aColor;
}

将y轴坐标乘以-1,使最终渲染出的是原坐标位置相对于y轴的镜像

题目二:使用uniform定义一个水平偏移量,在顶点着色器中使用这个偏移量把三角形移动到屏幕右侧:

C++代码

float offset = 0.5f;
int uniXOffset = glGetUniformLocation(shaderProgram, "xOffset");
glUniform1f(uniXOffset, 0.5f);

GLSL代码

#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, 1.0f); 
    gl_Position.x += xOffset;
    ourColor = aColor;
}

使用uniform接收偏移量,增加到x轴实现左右偏移;

题目三:使用out关键字把顶点位置输出到片段着色器,并将片段的颜色设置为与顶点位置相等(来看看连顶点位置值都在三角形中被插值的结果)。做完这些后,尝试回答下面的问题:为什么在三角形的左下角是黑的?

提供的数据

//顶点输入
float vertices[] = {
    // 位置              // 颜色
     0.5f, -0.5f, 0.0f,  1.0f, 0.0f, 0.0f,   // 右下
    -0.5f, -0.5f, 0.0f,  0.0f, 1.0f, 0.0f,   // 左下
     0.0f,  0.5f, 0.0f,  0.0f, 0.0f, 1.0f    // 顶部
};

GLSL代码

//顶点着色器
#version 330 core
layout (location = 0) in vec3 aPos;
layout (location = 1) in vec3 aColor;
out vec3 ourPosition;
void main()
{
    gl_Position = vec4(aPos, 1.0); 
    //将输出信息修改成坐标信息
    ourPosition = aPos;
}
================= 分割线 ====================
//片段着色器
#version 330 core
out vec4 FragColor;
//这里获取的输入信息被修改成了坐标信息
in vec3 ourPosition;
void main()
{
    FragColor = vec4(ourPosition, 1.0);
}

效果图
在这里插入图片描述

因为左下角的坐标为(-0.5f, -0.5f, 0.0f),负数被视为0相当于最终的颜色向量为(0.0f, 0.0f, 0.0f),所以最终左下角的颜色呈现为黑色;

因为左下角的坐标为(-0.5f, -0.5f, 0.0f),负数被视为0相当于最终的颜色向量为(0.0f, 0.0f, 0.0f),所以最终左下角的颜色呈现为黑色;

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/553788.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Swift Publisher 5 for mac:打造精美版面

Swift Publisher 5 for mac:打造精美版面 Swift Publisher 5是一款专业的版面设计和编辑工具,为Mac用户提供了强大的设计功能和直观的操作界面。以下是关于Swift Publisher 5的功能介绍: 直观易用的界面:用户能够轻松地使用Swift …

《人工智能》文档715篇,文档非常详细,云盘下载

人工智能未来的前景十分广阔,随着技术的不断发展,越来越多的人工智能应用将会出现在我们的生活中,在以下方面有着广泛的应用:《人工智能》文档715篇,文档非常详细,值得收藏 下载地址: 链接&…

浅析LED节能原理

随着全球对节能环保意识的增强,LED显示屏行业也在积极探索更加节能的生产和使用方式。作为显示屏制造厂家,了解和应用LED节能原理不仅是市场的需求,也是企业履行社会责任的表现。本文将浅析LED节能原理及其在显示屏制造中的应用。 LED节能的基…

数据库技术基础

根据希赛相关视频课程汇总整理而成,个人笔记,仅供参考。 基本概念 数据库通常是指有组织地、动态地存储在(外存上的相互联系的数据的集合)应用数据库主要目的是解决数据(共享)问题。 三级模式/两级映像&a…

云闪付支付通道接口申请

云闪付支付通道接口申请 云闪付支付通道申请是许多商家都希望完成的一项任务,因为它代表着更多的支付选择,更广泛的用户覆盖和更高的交易安全性。申请云闪付支付通道并不仅仅是一个简单的步骤,它需要商家对自身的业务有深入的了解&#xff0c…

代码随想录阅读笔记-回溯【N皇后】

题目 n 皇后问题 研究的是如何将 n 个皇后放置在 nn 的棋盘上,并且使皇后彼此之间不能相互攻击。 给你一个整数 n ,返回所有不同的 n 皇后问题 的解决方案。 每一种解法包含一个不同的 n 皇后问题 的棋子放置方案,该方案中 Q 和 . 分别代表…

【笔记】Telephony SIM SPN及运营商名称显示数据来源介绍

来源介绍 网络名称显示 来源及优先级(高到低) SourceCommentEnhanced Operator Name String(Eons) 名称信息存放: EF_PNN(PLMN Network Name, fid: 6FC5) :LAC和EF_PNN中的Record Identifier EF_OPL(Operator PLMN List, fid: 6FC…

数字工厂系统的开发

数字工厂系统(Digital Factory System,DFS)是基于数字孪生技术(Digital Twin Technology)和信息物理融合系统(Cyber-Physical System,CPS)构建的,用于仿真、分析和优化制…

【服务器部署篇】Linux下Nginx的安装和配置

作者介绍:本人笔名姑苏老陈,从事JAVA开发工作十多年了,带过刚毕业的实习生,也带过技术团队。最近有个朋友的表弟,马上要大学毕业了,想从事JAVA开发工作,但不知道从何处入手。于是,产…

[Collection与数据结构] 二叉树(三):二叉树精选OJ例题(下)

1.二叉树的分层遍历 OJ链接 上面这道题是分层式的层序遍历,每一层有哪些结点都很明确,我们先想一想普通的层序遍历怎么做 /*** 层序遍历* param root*/public void levelOrder1(Node root){Queue<Node> queue new LinkedList<>();queue.offer(root);while (!qu…

中文编程入门(Lua5.4.6中文版)第十二章 Lua 协程 参考《愿神》游戏

在《愿神》的提瓦特大陆上&#xff0c;每一位冒险者都拥有自己的独特力量——“神之眼”&#xff0c;他们借助元素之力探索广袤的世界&#xff0c;解决谜题&#xff0c;战胜敌人。而在提瓦特的科技树中&#xff0c;存在着一项名为“协同程序”的高级秘术&#xff0c;它使冒险者…

今天刷两题(day2)

题目一&#xff1a;最长公共前缀 题目描述&#xff1a; 给你一个大小为 n的字符串数组 strs &#xff0c;其中包含n个字符串 , 编写一个函数来查找字符串数组中的最长公共前缀&#xff0c;返回这个公共前缀。输入输出描述&#xff1a; 输入&#xff1a;"abca","…

照片光晕光学特效模拟调色Boris FX Optics 2024 mac下载安装教程

Boris FX Optics 2024 Mac版是一款照片光晕光学特效模拟调色软件&#xff0c;旨在模拟光学相机滤镜&#xff0c;专用镜头&#xff0c;胶卷和颗粒&#xff0c;镜头光晕&#xff0c;光学实验室处理&#xff0c;色彩校正以及自然光和摄影效果。用户可以通过应用光学并从160个滤镜和…

Day43:LeedCode 1049. 最后一块石头的重量 II 494. 目标和 474.一和零

1049. 最后一块石头的重量 II 有一堆石头&#xff0c;用整数数组 stones 表示。其中 stones[i] 表示第 i 块石头的重量。 每一回合&#xff0c;从中选出任意两块石头&#xff0c;然后将它们一起粉碎。假设石头的重量分别为 x 和 y&#xff0c;且 x < y。那么粉碎的可能结果…

图书管理系统概述

自友图书馆管理系统解决方案适用于中小学、大中专院校以及企事业单位中小型图书馆的自动化管理需求&#xff0c;其功能覆盖了图书馆自动化集成管理业务流程所包括的所有环节。《图书馆管理系统》首先应该按照我国图书馆行业通用CNMARC格式及《中图法第四版》行业标准开发而成,支…

计算机网络-IS-IS基础概念二

前面已经学习了IS-IS的定义、组成、NET地址标识以及路由器级别分类等&#xff0c;今天继续学习IS-IS基础概念知识。 参考链接&#xff1a;IS-IS路由协议基础概念 一、IS-IS支持的网络类型 IS-IS会自动根据接口的数据链路层封装决定该接口的缺省网络类型&#xff0c; IS-IS支持两…

【Go语言快速上手(二)】 分支与循环函数讲解

&#x1f493;博主CSDN主页:杭电码农-NEO&#x1f493;   ⏩专栏分类:Go语言专栏⏪   &#x1f69a;代码仓库:NEO的学习日记&#x1f69a;   &#x1f339;关注我&#x1faf5;带你学习更多Go语言知识   &#x1f51d;&#x1f51d; Go快速上手 1. 前言2. 分支与循环2.1…

中国隧道空间分布

中国隧道空间分布数据&#xff0c;包含2020年全国大部分地区16000余条隧道分布点位数据&#xff0c;数据包括市名称、区县名称、隧道名称和隧道经纬度。数据包含shp和EXCEl两种格式&#xff0c;部分隧道空间位置有偏移。 欢迎大家关注、收藏和留言&#xff0c;如果您想要什么数…

【GPT-4最新研究】GPT-4与科学探索:揭秘语言模型在科学领域的无限可能

各位朋友们&#xff0c;你们知道吗&#xff1f;自然语言处理领域最近取得了巨大的突破&#xff01;大型语言模型&#xff08;LLM&#xff09;的出现&#xff0c;简直就像打开了新世界的大门。它们不仅在语言理解、生成和翻译方面表现出色&#xff0c;还能涉足许多其他领域&…

网站创建的流程是什么

网站的创建过程包括几个主要的步骤&#xff0c;其中涉及到一系列的决策和实践操作。下面我将详细介绍网站创建的流程&#xff0c;帮助读者了解如何创建一个成功的网站。 第一步&#xff1a;确定网站目标和功能 在创建网站之前&#xff0c;你需要明确自己网站的目标和功能。是用…