<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[bendanfly的博客]]></title><description><![CDATA[]]></description><link>https://blog.youkuaiyun.com/bendanfly</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; bendanfly]]></copyright><item><title><![CDATA[OpenGL缓存对象VBO]]></title><link>https://blog.youkuaiyun.com/bendanfly/article/details/124413441</link><guid>https://blog.youkuaiyun.com/bendanfly/article/details/124413441</guid><author>bendanfly</author><pubDate>Mon, 25 Apr 2022 20:40:22 +0800</pubDate><description><![CDATA[VAO指的是顶点数组对象，你可以看成是C语言中的一个数组指针，它指向一个数组，这个数组里面的元素也是指针，而这些指针指向的就是缓存对象，相当与一片内存空间VBO。
缓存对象VBO有很多种类型，例如用来存储顶点属性数据的GL_ARRAY_BUFFER类型，用来存储索引数据的GL_ELEMENT_BUFFER类型等等。今天记录一下创建缓存对象的几个函数。
1、void glGenBuffers(GLSizei n,GLuint* buffers)
创建n个缓存对象，并将对象名保存在buffers中。
2、voi]]></description><category></category></item><item><title><![CDATA[OpenGL中顶点数组对象VAO相关的函数]]></title><link>https://blog.youkuaiyun.com/bendanfly/article/details/124036990</link><guid>https://blog.youkuaiyun.com/bendanfly/article/details/124036990</guid><author>bendanfly</author><pubDate>Fri, 08 Apr 2022 11:40:33 +0800</pubDate><description><![CDATA[1、void glCreateVertexArrays(GLsizei n,GLuint arrays)；*
返回n个未使用的对象名到数组arrays中，用作顶点数组对象。返回的对象名可以用来分配更多的缓存对象。当n为负数的时候，产生GL_INVALID-VALUE错误。
2、void glbindVeretexArray(GLuint array)；
glCreateVertexArrays函数所生成的对象名，你可以看作是一个指针，我们可以分配内存并且用该指针来用引用该内存。当我们得到对象之后，可以将它绑]]></description><category></category></item><item><title><![CDATA[利用QT进行OpenGL的学习]]></title><link>https://blog.youkuaiyun.com/bendanfly/article/details/124034475</link><guid>https://blog.youkuaiyun.com/bendanfly/article/details/124034475</guid><author>bendanfly</author><pubDate>Fri, 08 Apr 2022 10:25:42 +0800</pubDate><description><![CDATA[在学习OpenGL的时候，很多都是基于例如GLFW等第三方库来进行图像的的显示和窗口管理的，但是对于一些熟悉Qt的人来说，学习OpenGL，Qt也是一个非常不错的平台。就我个人而言，我相对来说比较喜欢QT来开发，Qt有很好的窗口管理功能，例如你只需要重写相关的鼠标函数等，你就能很简单的进行鼠标事件的管理等。
Qt中，你如果想要使用OpenGL进行开发，你只需要继承QOpenGLWidget和QOpenGLExtraFunctions，你就能使用OpenGL的功能。
有一点需要注意的是：你必须在你的类中重写v]]></description><category></category></item><item><title><![CDATA[QTabBar样式]]></title><link>https://blog.youkuaiyun.com/bendanfly/article/details/121777959</link><guid>https://blog.youkuaiyun.com/bendanfly/article/details/121777959</guid><author>bendanfly</author><pubDate>Tue, 07 Dec 2021 20:30:41 +0800</pubDate><description><![CDATA[QTabBar
{
border:none;
background:#1c1c1e;
margin:0 0 0 0;
padding:0 0 0 0;
}
QTabBar::scroller
{
width:48;
border:none;
}
QTabBar::tear
{
width:0px;
border:none;
}
QTabBar QToolButton
{
background:#1c1c1e;
border:none;
}
QTabBar QToolButton::right-arrow
{]]></description><category></category></item><item><title><![CDATA[shell命令的本质]]></title><link>https://blog.youkuaiyun.com/bendanfly/article/details/100256826</link><guid>https://blog.youkuaiyun.com/bendanfly/article/details/100256826</guid><author>bendanfly</author><pubDate>Mon, 02 Sep 2019 13:54:57 +0800</pubDate><description><![CDATA[一般来说，shell命令分为两种，一种是内置的命令，一种是外部命令。
1、内置命令
shell自带的命令叫做shell的内置命令，在内部是通过函数来实现的。当启动shell之后，这些命令所对应的函数代码就会被加载到内存中，因为这些命令是被直接加载到内存中，所以shell的内置命令在运行的时候是非常快的。
不过shell命令的内置命令不宜过多，过多的内置命令会让shell的体积变得很大，占用系统过多...]]></description><category></category></item><item><title><![CDATA[进入shell的两种方法]]></title><link>https://blog.youkuaiyun.com/bendanfly/article/details/100239251</link><guid>https://blog.youkuaiyun.com/bendanfly/article/details/100239251</guid><author>bendanfly</author><pubDate>Mon, 02 Sep 2019 13:07:20 +0800</pubDate><description><![CDATA[在Linux中，shell是连接内核和用户操作的中间层，用户通过shell就能使用Linux中的内核，进入shell的方法有两种。
1、进入Linux控制台
现在很多的Linux系统都有图形化界面模式。第一种方法就是退出图形化界面模式，进入Linux控制台模式。
现在的Linux系统在启动之后，都会自动的创建几个虚拟的控制台，其中一个控制台给图形界面使用，其他的保持原生控制台的样子。
从图形界面模...]]></description><category></category></item><item><title><![CDATA[C++中的强制类型转换]]></title><link>https://blog.youkuaiyun.com/bendanfly/article/details/95974156</link><guid>https://blog.youkuaiyun.com/bendanfly/article/details/95974156</guid><author>bendanfly</author><pubDate>Mon, 15 Jul 2019 16:08:58 +0800</pubDate><description><![CDATA[在C语言中，我们也可以对对变量等进行强制类型转换。例如：
char c = 'a';
int i = (int)c;// 将char类型强制转换为int类型

我们再来看一段代码：
#include &lt;stdio.h&gt;

typedef void(PF)(int);

struct Point
{
    int x;
    int y;
};

int main()
{
    i...]]></description><category></category></item><item><title><![CDATA[C++和C语言中的动态内存分配的区别]]></title><link>https://blog.youkuaiyun.com/bendanfly/article/details/95965129</link><guid>https://blog.youkuaiyun.com/bendanfly/article/details/95965129</guid><author>bendanfly</author><pubDate>Mon, 15 Jul 2019 14:48:13 +0800</pubDate><description><![CDATA[在C语言和C++中都会用到动态内存的申请分配的问题，两者之间申请动态内存分配还是区别的。
在C++中的动态内存的分配
1、C++通过new关键字进行动态内存的分配。new关键字是C++内置的一个关键字，也就是说只要是C++编译器，都可以使用new关键字进行动态内存的分配。
2、C++中动态内存的分配是给予类型进行分配的。
3、C++中用delete关键字对内存进行释放。
C++中内存申请和释放方式...]]></description><category></category></item><item><title><![CDATA[C++和C的相互调用]]></title><link>https://blog.youkuaiyun.com/bendanfly/article/details/95946199</link><guid>https://blog.youkuaiyun.com/bendanfly/article/details/95946199</guid><author>bendanfly</author><pubDate>Mon, 15 Jul 2019 11:45:38 +0800</pubDate><description><![CDATA[在实际的工程中，C++和C的相互调用时不可避免的。但是有时候用C语言的编译器编译成的软件包，在C++的程序中调用会出现错误。
先看一下一个例子：
add.c
#include "add.h"
int add(int a, int b)
{
    return a + b;
}

add.h
int add(int a, int b);

将这两个文件用C语言编译器编译成目标文件：
gcc add...]]></description><category></category></item><item><title><![CDATA[C++中函数重载的分析]]></title><link>https://blog.youkuaiyun.com/bendanfly/article/details/95942855</link><guid>https://blog.youkuaiyun.com/bendanfly/article/details/95942855</guid><author>bendanfly</author><pubDate>Mon, 15 Jul 2019 11:09:41 +0800</pubDate><description><![CDATA[在C语言中，是没有重载这个概念的，不过C++对C语言进行了升级，在C++之后的语言，几乎都有重载这一个概念。
重载：就是同一个标志符在不同上下文有不同的含义。
函数重载：用同一个函数名定义不同的函数。当同一个函数名搭配不同的参数列表的时候，函数的意义不同。例如：
int func(int x)
{
	return x;
}

int func(int x,int y)
{
	return x+y;...]]></description><category></category></item><item><title><![CDATA[C++中函数的默认参数]]></title><link>https://blog.youkuaiyun.com/bendanfly/article/details/95754324</link><guid>https://blog.youkuaiyun.com/bendanfly/article/details/95754324</guid><author>bendanfly</author><pubDate>Sat, 13 Jul 2019 15:25:40 +0800</pubDate><description><![CDATA[在C++中增加了函数的默认参数这一功能。在C++中，可以为函数声明的时候为函数提供一个默认值，当调用该函数的时候，如果没有函数参数的值，则会使用默认值。
例如下面的代码：
#include &lt;stdio.h&gt;

int func(int x = 0);	// 函数的声明
int main(int argc,char *argv[])
{
	printf("mul() = %d\n",f...]]></description><category></category></item><item><title><![CDATA[C++中引用的本质分析]]></title><link>https://blog.youkuaiyun.com/bendanfly/article/details/95629068</link><guid>https://blog.youkuaiyun.com/bendanfly/article/details/95629068</guid><author>bendanfly</author><pubDate>Fri, 12 Jul 2019 16:59:18 +0800</pubDate><description><![CDATA[引用是C++中心增加的内容，在C语言是没有引用这一种用法的。那什么是引用呢？
大家都知道，我们定义变量的时候，其实是将变量名和内存空间关联起来，变量名就是一段内存空间的别名。当我们使用引用的时候，例如int&amp; a = b; 其实就相当于a是b的别名，也就是说a和b都是指向同一段存储空间的。那这么做有什么意义呢？
我们在C语言的时候，当要交换两个变量的值时，

...]]></description><category></category></item><item><title><![CDATA[C语言和C++中三目运算符的区别]]></title><link>https://blog.youkuaiyun.com/bendanfly/article/details/95599524</link><guid>https://blog.youkuaiyun.com/bendanfly/article/details/95599524</guid><author>bendanfly</author><pubDate>Fri, 12 Jul 2019 11:35:45 +0800</pubDate><description><![CDATA[大家在编程的时候肯定用过if（。。）。。else。。。语句。那么三目运算符不知道大家用得多不多？其实三目运算法可以看做是if。。 else。。语句的简化，用过的肯定会很熟悉，那么我们今天就来说说三目运算符在C语言和C++中的区别。
C语言中的三目运算符
我们先来看一下代码：
#include &lt;stdio.h&gt;

int main()
{
	int a = 1;
	int b = 2;...]]></description><category></category></item><item><title><![CDATA[C++中的bool类型]]></title><link>https://blog.youkuaiyun.com/bendanfly/article/details/95597410</link><guid>https://blog.youkuaiyun.com/bendanfly/article/details/95597410</guid><author>bendanfly</author><pubDate>Fri, 12 Jul 2019 11:06:40 +0800</pubDate><description><![CDATA[学过C语言的程序员应该清楚，在C语言中，是没有bool这个基础类型的。在C语言中，当我们要表示真或假的时候，都是定义一个非bool类型来使用的。
在C++中，加入了布尔bool这种基础的类型，用true和false来表示真或者假，也可以用非0值来表示真，用0来表示假。在C++中，虽然布尔类型只表示true和false，看起来好像可以用一个位来存储布尔类型的变量，但其实，布尔类型在C++中是占用一个...]]></description><category></category></item><item><title><![CDATA[const在C语言和C++中的区别]]></title><link>https://blog.youkuaiyun.com/bendanfly/article/details/95492816</link><guid>https://blog.youkuaiyun.com/bendanfly/article/details/95492816</guid><author>bendanfly</author><pubDate>Thu, 11 Jul 2019 17:52:19 +0800</pubDate><description><![CDATA[对于C语言和c++熟悉的人都知道 const 这个修饰符的存在。在很多面试公司中，const 这个修饰符的面试题笔试题也是一直都有的，那对于const这个修饰符你真的了解吗？
问到const 这个修饰符的用处，很多人都会说，用const修饰符修饰的变量表示该变量是常亮，是只读的，无法修改的。其实对于这样的回答，是不准确的。
在C语言中的const
在C语言中，用const修饰的变量，其本质上还是个...]]></description><category></category></item><item><title><![CDATA[该博客的大致目的和计划]]></title><link>https://blog.youkuaiyun.com/bendanfly/article/details/95459939</link><guid>https://blog.youkuaiyun.com/bendanfly/article/details/95459939</guid><author>bendanfly</author><pubDate>Thu, 11 Jul 2019 11:29:41 +0800</pubDate><description><![CDATA[博客的处男秀，说说写这个博客的大致目的和计划
写这个博客的目的是为了帮助自己和帮助他人，这个博客以后会更新的主要内容是针对C语言的。C语言对于程序员来说是非常基础的东西，
这个博客主要针对的是C语言中大家会忽略但是又很重要的内容，主要记录的是我在学习中的一些感悟，所以想把它记录下来，有助于自己
的记忆，当然，如果能帮助到别人也是一件很快乐的事。


对于C语言来说，指针和数组是一个重点和难点。我个...]]></description><category></category></item></channel></rss>