- 博客(48)
- 收藏
- 关注
原创 简单着色器编写(下)
这些确实是一些字符串,但在OpenGL中,这些字符串是用来定义着色器程序的源代码的。:这是片元着色器的主要操作,将输出的片元颜色设置为红色(RGBA为1.0, 0.0, 0.0, 1.0),从而在屏幕上渲染出红色的图像。:这是一行字符串,表示OpenGL的版本号和着色器的核心(core)版本,这里使用的是OpenGL 3.3 core profile。作为参数传递给该函数。:这是顶点着色器的主函数,它是着色器的入口点,用于对顶点进行处理。:这是顶点着色器的主要操作,将传入的顶点坐标赋值给内置的输出变量。
2023-08-23 15:48:29
623
原创 简单着色器编写(中下)
整个函数的作用是,它会创建一个OpenGL程序对象,并将顶点着色器和片元着色器编译后的标识符附加到该程序对象上,然后返回程序对象的标识符,供后续使用。通过这两行代码,将编译后的顶点着色器和片元着色器对象附加到一个程序对象上,为后续的链接和使用做准备。通过这行代码,创建了一个程序对象并获得了它的标识符,以便在后续的代码中使用这个程序对象进行着色器附加、链接和使用等操作。通过这两行代码,编译了顶点着色器和片元着色器,获取了它们的着色器对象标识符,以便后续附加到程序对象中。同样,参数类型是一个常量引用。
2023-08-23 15:25:30
578
原创 简单着色器编写(中上)
通过查询信息日志的长度,你可以了解信息日志所需的缓冲区大小,然后可以为信息日志分配足够的空间来存储这些信息。这样做的目的是让调用者可以在后续的代码中继续使用这个着色器对象,例如将它附加到程序对象中,以便进行渲染。通过返回标识符,你可以在多个函数之间传递着色器对象,并在不同的地方使用它,以便实现更复杂的OpenGL操作。总之,这段代码的目的是在栈上分配一块内存空间,以便在之后的调用中存储着色器信息日志的内容。通过这个查询,你可以获得信息日志的长度,然后根据这个长度分配足够大的内存,以便在之后的调用中使用。
2023-08-23 14:46:20
564
原创 简单着色器编写(上)
在OpenGL中,通过绑定和解绑缓冲区,你可以在渲染过程中使用不同的缓冲区数据来绘制不同的图形。在这个例子中,它告诉OpenGL如何解释顶点位置属性的数据:每个顶点位置由两个浮点数组成,不标准化,每个顶点属性在数组中的偏移量为0。因此,这句话就是在告诉OpenGL的画笔(顶点着色器):“嘿,我要用位置属性这个颜料盒(属性数组)中的颜色(数据)来绘制我的风景(模型)!这是因为在使用顶点缓冲区对象绘制时,你可以将多个顶点属性存储在不同的顶点属性数组中,然后使用。:这是指定顶点属性数组中每个顶点属性的字节数。
2023-08-22 22:47:21
692
原创 OpenGL基础
OpenGL(Open Graphics Library)是一个用于渲染2D和3D图形的跨平台图形库,它提供了一系列函数和接口,允许开发者在不同的操作系统和硬件上创建交互式图形应用程序。总之,OpenGL是一个强大的图形库,用于创建各种图形应用程序,从简单的图形渲染到复杂的游戏开发和计算机视觉应用。渲染管线是一系列的阶段,用于将输入的几何数据转化为最终的像素颜色输出。顶点着色器用于处理顶点数据,片段着色器用于处理像素颜色。深度缓冲用于存储每个像素的深度信息,用于实现深度测试,控制渲染顺序以及实现透视效果。
2023-08-21 21:21:29
269
原创 OpenGL学习路程(一)
然而,要注意每个三角形都是独立的,不会自动连接成复杂的形状,这需要在你的应用逻辑中考虑如何组织和连接这些三角形。需要注意的是,这段代码使用了OpenGL的固定渲染管线,这是较早版本的OpenGL中的一种渲染方式。每个三角形的三个顶点会按照逆时针顺序(或顺时针,取决于你的设置)连接起来,构成一个实心的三角形。渲染模式时,你需要提供一系列的顶点坐标,每个三个顶点表示一个三角形。我不打算在这里写出我配置opengl环境的过程,确实有些麻烦,大家对照视频自行配置,在这里只介绍三角形的核心代码。
2023-08-21 17:58:50
261
原创 [USACO1.5] 八皇后 Checker Challenge
一个如下的 6 x 6 的跳棋棋盘,有六个棋子被放置在棋盘上,使得每行、每列有且只有一个,每条对角线(包括两条主对角线的所有平行线)上至多有一个棋子。这是深搜的经典题目,可以分别对行,列,对角线做标记来做这道题。其中我们可以发现,一条对角线上,行和列的和和差的值是一样的。前三行为前三个解,每个解的两个数字之间用一个空格隔开。第四行只有一个数字,表示解的总数。并把它们以上面的序列方法输出,解按字典顺序排列。一行一个正整数 n,表示棋盘是 n x n 大小的。对于 100% 的数据,6
2023-08-18 14:17:35
143
原创 [Poetize6] IncDec Sequence
给定一个长度为 n 的数列 a_1,a_2,...,a_n,每次可以选择一个区间[l,r],使这个区间内的数都加 1 或者都减 1。请问至少需要多少次操作才能使数列中的所有数都一样,并求出在保证最少次数的前提下,最终得到的数列有多少种。对于 100% 的数据,n
2023-08-14 17:12:53
377
原创 地毯(暴力+差分两种方法)
在 nx n 的格子上有 m 个地毯。给出这些地毯的信息,问每个点被多少个地毯覆盖。第一行,两个正整数 n,m。意义如题所述。接下来 m 行,每行两个坐标 (x_1,y_1) 和 (x_2,y_2),代表一块地毯,左上角是 (x_1,y_1),右下角是 (x_2,y_2)。输出 n行,每行n 个正整数。第 i 行第 j 列的正整数表示 (i,j) 这个格子被多少个地毯覆盖。样例输入 #15 32 2 3 33 3 5 51 2 1 4样例输出 #10 1 1 1 0。
2023-08-14 09:50:36
335
原创 [USACO16JAN] Subsequences Summing to Sevens S
给你n个数,分别是a[1],a[2],...,a[n]。求一个最长的区间[x,y],使得区间中的数(a[x],a[x+1],a[x+2],...,a[y-1],a[y])的和能被7整除。若没有符合要求的区间,输出0。数组来记录每个前缀和首次出现位置和最后一次出现位置。通过遍历所有前缀和,计算每个前缀和对应的最大子数组长度,找到最大值,最终输出满足和为 7 的倍数的最大子数组长度。这个算法的时间复杂度是 O(n)。这段代码的主要思想是通过计算前缀和,然后使用。
2023-08-13 20:19:06
143
原创 A+B Problem(高精)
高精度加法,相当于 a+b problem,这道题大家要看清楚哦,a和b的范围非常大。输出只有一行,代表 a+b 的值。
2023-08-12 20:23:56
313
原创 [NOIP2007 普及组] 纪念品分组
为使得参加晚会的同学所获得 的纪念品价值相对均衡,他要把购来的纪念品根据价格进行分组,但每组最多只能包括两件纪念品, 并且每组纪念品的价格之和不能超过一个给定的整数。经典的贪心问题,先用sort函数排序,再定义两个指针从队头和队尾分别开始,每次都将当前最大值和最小值加起来,如果相加的值小于上限,则把它们两个分为一组,否则将最大的那个单独一组。100% 的数据满足:1
2023-08-11 17:55:22
205
原创 跳跳!(贪心)
这一天,你和朋友小 F 一起出去玩耍的时候,遇到了一堆高矮不同的石头,其中第 i 块的石头高度为 h_i,地面的高度是 h_0 = 0。你估计着,从第 i 块石头跳到第 j 块石头上耗费的体力值为 (h_i - h_j) ^ 2,从地面跳到第 i 块石头耗费的体力值是 (h_i) ^ 2。小 F 给你递来了一个写着 AK 的电脑,你可以使用计算机程序帮你解决这个问题,万能的计算机会告诉你怎么跳。对于 1
2023-08-11 13:59:22
84
原创 [USACO1.3] 混合牛奶 Mixing Milk
此外,就像每头奶牛每天只能挤出固定数量的奶,每位奶农每天能提供的牛奶数量是一定的。给出 Marry 乳业每天对牛奶的需求量,还有每位奶农提供的牛奶单价和产量。计算采购足够数量的牛奶所需的最小花费。接下来 m 行,每行两个整数 p_i,a_i,表示第 i 个农民牛奶的单价,和农民 i 一天最多能卖出的牛奶量。单独的一行包含单独的一个整数,表示 Marry 的牛奶制造公司拿到所需的牛奶所要的最小费用。第一行二个整数 n,m,表示需要牛奶的总量,和提供牛奶的农民个数。题目翻译来自 NOCOW。
2023-08-11 11:42:38
110
原创 [USACO17JAN] Secret Cow Code S
请注意,数据可能很大,放进一个标准的 32 位整数可能不够,所以你可能要使用一个 64 位的整数类型(例如,在 C/C++ 中是 `long long`)。给定一个字符串,让后面的字符旋转一次(每一次正确的旋转,最后一个字符都会成为新的第一个字符)。也就是说,给定一个初始字符串,之后的每一步都会增加当前字符串的长度。第一行输入一个字符串。这道题看似是一道字符串的题,但是我在翻看题解时,看到一种惊为天人的做法,非常的巧妙。请输出从初始字符串生成的无限字符串中的位置的字符。第一个字符是 N=1.。
2023-08-09 16:23:30
114
原创 [NOIP1998 普及组] 幂次方
所以 1315 最后可表示为 2(2(2+2(0))+2)+2(2(2+2(0)))+2(2(2)+2(0))+2+2(0)。所以最后 137 可表示为 2(2(2)+2+2(0))+2(2+2(0))+2(0)。例如 137=2^7+2^3+2^0。7= 2^2+2+2^0 ( 2^1 用 2 表示),并且 3=2+2^0。对于 100% 的数据,1
2023-08-09 13:15:05
183
原创 【模板】快速幂 | 取余运算(快速幂算法)
输出一行一个字符串 `a^b mod p=s`,其中 a,b,p 分别为题目给定的值, s 为运算结果。对于 100% 的数据,保证 00,2
2023-08-08 22:35:24
232
原创 A-B 数对(哈希表)
这道题是求两个数相减为C的数对的数量,我们不妨换个思路,A与C相减为B。给出一串正整数数列以及一个正整数 C,要求计算出所有满足 A - B = C 的数对的个数(不同位置的数字一样的数对算不同的数对)。对于 100% 的数据,1
2023-08-08 18:17:59
234
原创 [NOIP2005 提高组] 谁拿了最多奖学金
接下来的 N 行每行是一位学生的数据,从左向右依次是姓名,期末平均成绩,班级评议成绩,是否是学生干部,是否是西部省份学生,以及发表的论文数。例如姚林的期末平均成绩是 87 分,班级评议成绩 82 分,同时他还是一位学生干部,那么他可以同时获得五四奖学金和班级贡献奖,奖金总数是 4850 元。2. 五四奖学金,每人 4000 元,期末平均成绩高于 85 分(>85),并且班级评议成绩高于 80 分(>80)的学生均可获得;- 第 3 行是这 N个学生获得的奖学金的总数。第一行是1个整数 N,表示学生的总数。
2023-08-07 13:42:55
98
原创 [NOIP2009 普及组] 分数线划定
面试分数线根据计划录取人数的 150% 划定,即如果计划录取 m 名志愿者,则面试分数线为排名第 m x 150%(向下取整)名的选手的分数,而最终进入面试的选手为笔试成绩不低于面试分数线的所有选手。保证 4 个人进入面试的分数线为 88,但因为 88 有重分,所以所有成绩大于等于 88 的选手都可以进入面试,故最终有 5 个人进入面试。从第二行开始,每行包含 2 个整数,中间用一个空格隔开,分别表示进入面试的选手的报名号和笔试成绩,按照笔试成绩从高到低输出,如果成绩相同,则按报名号由小到大的顺序输出。
2023-08-07 12:59:34
105
原创 [NOIP2006 普及组] 明明的随机数(unique去重函数)
明明想在学校中请一些同学一起做一项问卷调查,为了实验的客观性,他先用计算机生成了 N 个 1 到 1000 之间的随机整数 (N
2023-08-07 10:31:51
63
原创 [NOIP2015 提高组] 神奇的幻方
4. 若 (K-1) 既不在第一行,也不在最后一列,如果 (K-1) 的右上方还未填数,则将 K 填在(K-1) 的右上方,否则将 K 填在 (K-1) 的正下方。1. 若 (K-1) 在第一行但不在最后一列,则将 K 填在最后一行, (K-1) 所在列的右一列;2. 若(K-1) 在最后一列但不在第一行,则将 K 填在第一列, (K-1) 所在行的上一行;3. 若 (K-1) 在第一行最后一列,则将 K 填在 (K-1) 的正下方;现给定 N ,请按上述方法构造 N x N 的幻方。
2023-08-06 12:32:32
116
原创 [NOIP2003 普及组] 乒乓球
在 11 分制下,此时比赛的结果是华华第一局 11 比 0 获胜,第二局 11 比 0 获胜,正在进行第三局,当前比分 1 比 1。而在 21 分制下,此时比赛结果是华华第一局 21 比 0 获胜,正在进行第二局,比分 2比 1。如果一局比赛刚开始,则此时比分为 0 比 0。其中第一部分是 11 分制下的结果,第二部分是 21 分制下的结果,两部分之间由一个空行分隔。华华通过以下方式进行分析,首先将比赛每个球的胜负列成一张表,然后分别计算在 11 分制和 21 分制下,双方的比赛结果(截至记录末尾)。
2023-08-06 11:09:42
59
原创 [NOIP2016 提高组] 玩具谜题
小南发现, 这个谜题中玩具小人的朝向非常关键, 因为朝内和朝外的玩具小人的左右方向是相反的: 面朝圈内的玩具小人, 它的左边是顺时针方向, 右边是逆时针方向;这时 singer 告诉小南一个谜題: “眼镜藏在我左数第 3 个玩具小人的右数第 1 个玩具小人的左数第 2 个玩具小人那里。- s=1:若为“√”,表示该测试点保证所有的指令都只数 1 个,即对任意的 1
2023-08-04 18:31:53
124
原创 [NOIP2014 提高组] 生活大爆炸版石头剪刀布
例如:如果小 A 以“石头-布-石头-剪刀-蜥蜴人-斯波克”长度为 6 的周期出拳,那么他的出拳序列就是“石头-布-石头-剪刀-蜥蜴人-斯波克-石头-布-石头-剪刀-蜥蜴人-斯波克-......”,而如果小 B 以“剪刀-石头-布-斯波克-蜥蜴人”长度为 5 的周期出拳,那么他出拳的序列就是“剪刀-石头-布-斯波克-蜥蜴人-剪刀-石头-布-斯波克-蜥蜴人-......”平局两人都得 0 分。第一行包含三个整数:N,N_A,N_B,分别表示共进行 N 次猜拳、小 A 出拳的周期长度,小 B 出拳的周期长度。
2023-08-04 12:29:23
122
1
原创 [NOIP2009 普及组] 多项式输出——值得纪念的一道
紧跟一个正整数,表示此项系数的绝对值(如果一个高于 0 次的项,其系数的绝对值为 1,则无需输出 1)。如果 x 的指数大于 1,则接下来紧跟的指数部分的形式为“x^b”,其中 b 为 x 的指数;想告诉未来的自己,不要随随便便因为一个男生口头上说几句好话就对他特别关注,因为我们根本不知道他对多少女生说过,他跟你分享的东西,不知道同时跟几个女生发。3. 如果多项式 n 次项系数为正,则多项式开头不出 `+` 号,如果多项式 n 次项系数为负,则多项式以 `-` 号开头。“你一直都在进步,你很棒!
2023-08-03 22:40:21
90
原创 [NOIP2011 提高组] 铺地毯
现在将这些地毯按照编号从小到大的顺序平行于坐标轴先后铺设,后铺的地毯覆盖在前面已经铺好的地毯之上。接下来的 n 行中,第 i+1 行表示编号 i 的地毯的信息,包含四个整数 a ,b ,g ,k,每两个整数之间用一个空格隔开,分别表示铺设地毯的左下角的坐标 (a, b) 以及地毯在 x 轴和 y 轴方向的长度。如下图,1 号地毯用实线表示,2 号地毯用虚线表示,3 号用双实线表示,覆盖点 (2,2) 的最上面一张地毯是 3 号地毯。地毯铺设完成后,组织者想知道覆盖地面某个点的最上面的那张地毯的编号。
2023-08-03 18:04:34
34
原创 [NOIP2001 提高组] 数的划分(DFS剪枝+动态规划 两种方法)
题目描述将整数 n 分成 k 份,且每份不能为空,任意两个方案不相同(不考虑顺序)。例如:n=7,k=3,下面三种分法被认为是相同的。1,1,5;1,5,1;5,1,1.问有多少种不同的分法。输入格式输出格式1 个整数,即不同的分法。样例 #1样例输入 #17 3样例输出 #14提示四种分法为:1,1,5;1,2,4;1,3,3;2,2,3.
2023-08-03 13:39:03
98
原创 台阶问题
有 N 级台阶,你一开始在底部,每次可以向上迈 1~ K 级台阶,问到达第 N 级台阶有多少种不同方式。一个正整数 ans(mod 100003),为到达第 N 级台阶的不同方式数。- 对于 100% 的数据,1
2023-08-03 10:53:45
316
原创 Function(记忆化搜索)
阅读递归函数内容,我们发现,当a20时,返回值都是w(20,20,20),因此,对于以上的这些数据,我们可以不进行记忆化处理。它通过保存已经计算过的结果,以便在后续的计算中直接使用,从而减少重复的计算。- 其它的情况就返回 w(a-1,b,c)+w(a-1,b-1,c)+w(a-1,b,c-1)-w(a-1,b-1,c-1)- 如果 a
2023-08-02 18:12:29
140
原创 [NOIP1998 提高组] 拼数(字符串排序)
在C++中,数组的大小是固定的,一旦定义了数组,其大小就无法改变。所以,有时候我们需要知道数组中元素的个数,以便在后续的操作中进行循环遍历等操作。中元素的个数,以便在后续的操作(比如循环遍历)中使用。在计算机编程中,可以对字符串按照字典序(字符的ASCII码值)进行排序,或者使用自定义的比较函数来实现特定的排序规则。通过将整个数组的字节数除以单个元素的字节数,就可以得到数组中元素的个数。在大多数编程语言中,都提供了排序函数或排序库,可以直接对字符串数组进行排序。,它按照字符串长度的降序对字符串进行排序。
2023-08-02 10:46:53
223
原创 [NOIP2016 普及组] 回文日期
因此,如果我们考虑整个日期的回文形式,例如0229的回文形式是9220,这个日期实际上是一个存在的日期,是9220年2月29日,而9220年是闰年,因此这个日期是有效的。当日期部分是0229时,表示的是2月29日,但是由于2月份中只有闰年才有29天,所以我们需要确保年份部分是一个闰年,这样这个日期才是一个真实存在的日期。一个 8 位数字是回文的,当且仅当对于所有的 i(1
2023-08-01 21:53:29
212
1
原创 [NOIP2011 普及组] 统计单词数
注意:匹配单词时,不区分大小写,但要求完全匹配,即给定单词必须与文章中的某一独立单词在不区分大小写的情况下完全相同(参见样例 1),如果给定单词仅是文章中某一单词的一部分则不算匹配(参见样例 2)。一行,如果在文章中找到给定单词则输出两个整数,两个整数之间用一个空格隔开,分别是单词在文章中出现的次数和第一次出现的位置(即在文章中第一次出现时,单词首字母在文章中的位置,位置从 0 开始);一般的文本编辑器都有查找单词的功能,该功能可以快速定位特定单词在文章中的位置,有的还能统计出特定单词在文章中出现的次数。
2023-08-01 12:57:06
131
1
原创 [NOIP2008 普及组] ISBN 号码
每一本正式出版的图书都有一个 ISBN 号码与之对应,ISBN 码包括 9 位数字、1 位识别码和 3 位分隔符,其规定格式如 `x-xxx-xxxxx-x`,其中符号 `-` 就是分隔符(键盘上的减号),最后一位是识别码,例如 `0-670-82162-4`就是一个标准的 ISBN 码。如果错误,则输出你认为是正确的 ISBN 号码。一行,假如输入的 ISBN 号码的识别码正确,那么输出 `Right`,否则,按照规定的格式,输出正确的 ISBN 号码(包括分隔符 `-`)。
2023-08-01 11:02:42
109
1
原创 【XR-4】模拟赛
比如,小 X 在接下来的第 2,3,5 天有空打模拟赛,那么他就必须在第 2 天打第 1 套模拟赛题,第 3 天打第 2套模拟赛题,第 5 天打第 3套模拟赛题。接下来 n 行,每行 m 个整数,第 i 行第 j 列的整数 a_{i,j} 表示第 i 个人在接下来的 k 天中第 j 个有空的日子为第 a_{i,j} 天。对于 100% 的数据,1
2023-07-31 17:02:41
110
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人