![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
OpenGL/C++
sh15285118586
对游戏感兴趣,想做科技馆交互设计
展开
-
GPU 数据与内存交互记录
gputexture gpubffer uint8*原创 2024-03-15 16:55:52 · 349 阅读 · 0 评论 -
批量删除文件
find -name "a.txt" | xargs rm -rf原创 2020-04-02 12:30:30 · 203 阅读 · 0 评论 -
C++中friend的使用(friend function and friend class)
对于一个没有定义public访问权限的类,能够让其他的类操作它的私有成员往往是有用的。例如你写了一段binary tree的代码,Node是节点类,如果能够让连接多个节点的函数不需要调用public方法就能够访问到Node的私有成员的话,一定是很方便的。Friend Classes(友元类)C++中的friend关键字其实做这样的事情:在一个类中指明其他的类(或者)函数能够直接访问该类转载 2015-08-04 11:01:15 · 802 阅读 · 0 评论 -
std::function与std::bind 函数指针
function模板类和bind模板函数,使用它们可以实现类似函数指针的功能,但却却比函数指针更加灵活,特别是函数指向类 的非静态成员函数时。std::function可以绑定到全局函数/类静态成员函数(类静态成员函数与全局函数没有区别),如果要绑定到类的非静态成员函数,则需要使用std::bind。[cpp] view plaincopy转载 2015-08-04 09:58:04 · 420 阅读 · 0 评论 -
OpenGL常见问题
Q:创建新的project是出现unresolved external symbol __imp__wglCreateContext@4 referenced in function等问题。是因为没有链接包。A:是因为没有链接包。opengl32.lib;%(AdditionalDependencies) 相关链接 http://stackoverflow.com/question原创 2015-11-02 17:55:47 · 668 阅读 · 0 评论 -
C++引用
对于习惯使用C进行开发的朋友们,在看到c++中出现的&符号,可能会犯迷糊,因为在C语言中这个符号表示了取地址符,但是在C++中它却有着不同的用途,掌握C++的&符号,是提高代码执行效率和增强代码质量的一个很好的办法。在 c++学习提高篇(3)---隐式指针的文章中详细介绍了在隐式指针&的用法,其实这两个概念是统一的。引用是C++引入的新语言特性,是C++常用的一个重要内容之一,正确、灵转载 2016-04-26 11:12:44 · 319 阅读 · 0 评论 -
C++封装继承多态总结
面向对象的三个基本特征面向对象的三个基本特征是:封装、继承、多态。其中,封装可以隐藏实现细节,使得代码模块化;继承可以扩展已存在的代码模块(类);它们的目的都是为了——代码重用。而多态则是为了实现另一个目的——接口重用!封装转载 2016-04-26 14:13:23 · 497 阅读 · 0 评论 -
C++多态性
C++编程语言是一款应用广泛,支持多种程序设计的计算机编程语言。我们今天就会为大家详细介绍其中C++多态性的一些基本知识,以方便大家在学习过程中对此能够有一个充分的掌握。 多态性可以简单地概括为“一个接口,多种方法”,程序在运行时才决定调用的函数,它是面向对象编程领域的核心概念。多态(polymorphism),字面意思多种形状。 C++多态性是通过虚函数来实现的,虚函数允许子类重新定转载 2016-04-26 14:14:15 · 448 阅读 · 0 评论 -
二叉树前序、中序、后序遍历相互求法
今天来总结下二叉树前序、中序、后序遍历相互求法,即如果知道两个的遍历,如何求第三种遍历方法,比较笨的方法是画出来二叉树,然后根据各种遍历不同的特性来求,也可以编程求出,下面我们分别说明。首先,我们看看前序、中序、后序遍历的特性: 前序遍历: 1.访问根节点 2.前序遍历左子树 3.前序遍历右子树 中序遍历: 1.中序遍历左子树转载 2016-04-26 16:24:08 · 330 阅读 · 0 评论 -
OpenGL es 透明问题
错误效果如下(带有透明):正确效果如下:代码: glEnable(GL_DEPTH_TEST); glDepthMask(GL_TRUE); glEnable(GL_CULL_FACE); glDrawArrays(GL_TRIANGLES, 0, count_last); glDisable(GL_CULL_FACE); glDepthMask原创 2016-05-11 21:17:09 · 1732 阅读 · 0 评论 -
vs中 .h和.cpp之间的切换
先按Control+K,再按Control+O就可以了原创 2016-07-18 11:37:48 · 7446 阅读 · 0 评论 -
std::thread and std::mutex
本篇介绍的是线程!在cocos2dx 2.0时代,我们使用的是pthread库,是一套用户级线程库,被广泛地使用在跨平台应用上。但在cocos2dx 3.0中并未发现有pthread的支持文件,原来c++11中已经拥有了一个更好用的用于线程操作的类std::thread。cocos2dx 3.0的版本默认是在vs2012版本,支持c++11的新特性,使用std::thread来创建线程简直转载 2015-07-31 15:56:42 · 1543 阅读 · 0 评论 -
dynamic_cast详解
作为四个内部类型转换操作符之一的dynamic_cast和传统的C风格的强制类型转换有着巨大的差别。除了dynamic_cast以外的转换,其行为的都是在编译期就得以确定的,转换是否成功,并不依赖被转换的对象。而dynamic_cast则不然。在这里,不再讨论其他三种转换和C风格的转换。首先,dynamic_cast依赖于RTTI信息,其次,在转换时,dynamic_cast会检查转换的sou转载 2015-07-31 10:02:56 · 543 阅读 · 0 评论 -
加载bmp文件方法一
第一步:定义类CMyTextureMyTexture.h文件内容:typedef struct _ImageRec { unsigned short imagic; unsigned short type; unsigned short dim; unsigned short xsize, ysize, zsize; unsigned int mi原创 2015-04-07 15:45:38 · 711 阅读 · 0 评论 -
简单瀑布核心代码
一、程序的效果图:二、程序源代码位置:http://download.csdn.net/detail/sh15285118586/8570989三、核心代码提炼:1、单个粒子的代码:Particle.h内容:(BMPLoader相关文件请参考我的博客“加载bmp文件方法二”)#include "BMPLoader.h"/** 粒子结构 */struct Part原创 2015-04-07 16:32:26 · 1457 阅读 · 0 评论 -
雨滴波纹核心代码
一、案例效果图:二、源代码下载地址:http://download.csdn.net/detail/sh15285118586/8571025#comment三、核心代码部分:BOOL CMyRainsView::RenderScene() { glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT); glLoadId原创 2015-04-07 17:49:22 · 1471 阅读 · 0 评论 -
加载bmp文件方法二
一、BMPLoader.h内容:#define BITMAP_ID 0x4D42 /**< 位图文件的标志 *//** 位图载入类 */class CBMPLoader{ public: CBMPLoader(); ~CBMPLoader(); bool LoadBitmap(const char *filename); /**< 装载一个b原创 2015-04-07 16:52:23 · 1330 阅读 · 0 评论 -
GLSL内建函数
转载地址:http://blog.csdn.net/hgl868/article/details/7876257 OpenGL ES着色语言为标量和向量操作定义了一套内建便利函数。有些内建函数可以用在多个类型的着色器中,有些是针对固定硬件的,所以这部分只能用在某个特定的着色器上。 内建函数基本上可以分为一下三类:(1)它们使用一些简便的方式提供必要的硬件转载 2015-04-16 08:29:40 · 575 阅读 · 0 评论 -
OpenGL_砖块着色案例
效果图:顶点着色器:uniform vec3 LightPosition;const float SpecularContribution=0.3;const float DiffuseContribution=1.0-SpecularContribution;varying float LightIntensity;varying vec2 MCposition;原创 2015-04-21 17:39:00 · 889 阅读 · 0 评论 -
OpenGL加载shader代码
c++加载shader的代码:#include #include #include #include "glew.h"#include "stdafx.h"static char *shaderLoadSource(const char *filePath){ const size_t blockSize=512; FILE *fp; char buf[blockSize];原创 2015-04-21 17:53:50 · 1312 阅读 · 0 评论 -
创建使用shader的OpenGL简单工程过程
第一步:file->new->project:第二步:第三步:第四步:第五步:第六步:第七步:第八步:加载glew.h和glew.c第九步:右键单击glew.c->property第十步:这样就配置好一个基本的工程了。然后就可以往里面加载代码运行了。原创 2015-04-21 18:13:09 · 661 阅读 · 0 评论 -
c++常用函数学习--------exit() 与atexit()的区别:
1. exit()函数:void exit(int state); 用于在程序运行的过程中随时结束程序,exit的参数state是返回给操作系统,返回0表示程序正常结束,非0表示程序非正常结束。 一个函数中都可以调用exit(),main函数结束时也会隐式地调用exit函数。exit()函数工作过程: 首先会执行由ate转载 2015-06-26 11:00:01 · 461 阅读 · 0 评论 -
C++ Virtual详解
Virtual是C++ OO机制中很重要的一个关键字。只要是学过C++的人都知道在类Base中加了Virtual关键字的函数就是虚拟函数(例如函数print),于是在Base的派生类Derived中就可以通过重写虚拟函数来实现对基类虚拟函数的覆盖。当基类Base的指针point指向派生类Derived的对象时,对point的print函数的调用实际上是调用了Derived的print函数而不是Ba转载 2015-07-31 12:39:36 · 593 阅读 · 0 评论 -
OpenGL 喷泉效果部分解释
一、头文件:MyFountainView.h#if !defined(AFX_MYFOUNTAINVIEW_H__E05402FF_323D_4CD3_A3C7_0BA99ECE1187__INCLUDED_)#define AFX_MYFOUNTAINVIEW_H__E05402FF_323D_4CD3_A3C7_0BA99ECE1187__INCLUDED_#if _MSC_VER >原创 2015-03-18 15:15:04 · 2593 阅读 · 0 评论