
C++
isyb
人生就像马拉松,不需要一直冲刺,需要的是坚持。
展开
-
实现透明效果时,开启深度测试,关闭深度写入
同一个场景,同时存在透明和不透明物体,存在各种遮挡关系。正常渲染流程:渲染不透明物体时,开启深度测试和深度写入,开启渲染透明物体时,开启深度测试,关闭深度写入。两种状态,互相切换。 深度测试与开启就3种情况:(以下透明物体称为A,不透明物体称为B)1、始终开启深度测试和深度写入(默认状态) 此时,如果A在前,B在后,深度测试时,B不能通过测试,B的像素直接被丢弃,因此B不能参与混合,也就不能实现透明效果。2、渲染透明物体时,直接...原创 2021-11-12 18:30:09 · 3759 阅读 · 2 评论 -
成员函数模板的实现
class Float3{public: Float3(float x, float y, float z) { this->x = x; this->y = y; this->z = z; } template<class T> Float3 operator*(const Float3& obj) { return Float3(x*obj.z, y*obj.z, z*obj.z); }private: float x; f.原创 2021-11-03 11:14:04 · 296 阅读 · 0 评论 -
色带下拉框
效果图:原创 2021-07-12 10:38:01 · 185 阅读 · 0 评论 -
CImageList::GetImageInfo取到的bitmap不能用
开发过程中遇到一个问题,CImageList::GetImageInfo取到的HBITMAP不能直接使用,比如取颜色值都是空的。IMAGEINFO info;m_comboColor.GetImageList()->GetImageInfo(index, &info);//HBITMAP hbmp = info.hbmImage;//必须复制一份再进行操作,否则取不到值HBITMAP hbmp = (HBITMAP)CopyImage(info.hbmImage,IMAGE_B原创 2021-07-01 15:25:13 · 324 阅读 · 1 评论 -
创建纯色bitmap和替换bitmap颜色
1、替换bitmap颜色//-------------------------------------------------------------------------------// ReplaceColor//// Author : Dimitri Rochette drochette@coldcat.fr// Specials Thanks to Joe Woodbury for his comments and code corrections//// Includes原创 2021-06-30 17:27:23 · 1126 阅读 · 0 评论 -
是否可以手动调用析构函数
答案是可以。但是有个误区要注意。虽然可以手动调用析构函数,但是对象的内存并没有释放。看一下代码示例:#include "stdafx.h"#include <iostream>#include <crtdbg.h>#ifdef _DEBUG#define new new(_NORMAL_BLOCK, __FILE__, __LINE__)#endifusing namespace std;class A{public: A() { cout <原创 2021-04-02 17:25:54 · 5297 阅读 · 2 评论 -
C++ 虚函数与纯虚函数
虚函数与纯虚函数 在他们的子类中都可以被重写。它们的区别是:(1)纯虚函数只有定义,没有实现;而虚函数既有定义,也有实现的代码。纯虚函数一般没有代码实现部分,如virtual void print() = 0;而一般虚函数必须要有代码的实现部分,否则会出现函数未定义的错误。virtual void print(){ printf("This is virtual function\n"); }(2)包含纯虚函数的类不能定义其对象,而包含虚函数的则可以。如果子类想要实例化,纯虚原创 2020-11-25 10:28:44 · 852 阅读 · 0 评论 -
进程间通讯SendMessage
PostMessage貌似只能用于进程内通讯,不同进程间通讯可以用SendMessage和共享内存等方式。这里理出SendMessage的用法,方便日后查阅。发送消息的进程代码:const UINT messageID = RegisterWindowMessage("SingletonApplication");char szTemp[1024] = { 0 };sprintf(...原创 2020-02-03 14:15:35 · 930 阅读 · 0 评论 -
判断点是否在多边形内
bool CCourTourTransition::point_in_polygon(const Vector2d &pt,const std::vector<Vector2d>& polygon){ int i,j = static_cast<int>(polygon.size())-1 ; bool oddNodes=false; dou...原创 2019-10-20 15:55:20 · 201 阅读 · 0 评论 -
读取tiff和shp
#include "stdafx.h"#include "read_tif.h"#include "gdal\include\gdal_priv.h"#include "gdal\include\ogr_spatialref.h"#include "gdal\include\ogrsf_frmts.h"#include "kernel_service\service\COM_Servi...原创 2019-10-20 10:59:07 · 1015 阅读 · 0 评论 -
gdal解析tif
bool HandleTif::ReadTif(){ //tif文件读取 std::string name = "D:\\XX\\xx.tif"; const char *charName = name.c_str(); //注册 GDALAllRegister(); //以防中文名不能正常读取 CPLSetConfigOption("GDAL_FILENAME_IS_UTF8"...转载 2018-12-04 09:58:22 · 3277 阅读 · 3 评论 -
Boost:shared_memory_object --- 共享内存
什么是共享内存共享内存是最快速的进程间通信机制。操作系统在几个进程的地址空间上映射一段内存,然后这几个进程可以在不需要调用操作系统函数的情况下在那段内存上进行读/写操作。但是,在进程读写共享内存时,我们需要一些同步机制。考虑一下服务端进程使用网络机制在同一台机器上发送一个HTML文件至客户端将会发生什么:服务端必须读取这个文件至内存,然后将其传至网络函数,这些网络函数拷贝那段内存至操作系统的内部内...转载 2018-06-29 14:42:30 · 3558 阅读 · 0 评论 -
初始化DirectX遇到的问题
获取接口IDirect3D8指针这个接口主要用于获取硬件设备信息,并且创建接口IDirect3DDevice9。获取IDirect3D9的代码十分简单,如下所示:IDirect3D8 *pD3D = nullptr;pD3D = Direct3DCreate8(D3D_SDK_VERSION);Direct3DCreate8函数返回一个IDirect3D8的指针,如果创建失败会返回NULL,它...原创 2018-06-25 15:24:00 · 2013 阅读 · 0 评论 -
C++加载lib和dll的方法
C++加载lib的方法:方法1、直接添加lib项目的引用方法2、在属性—连接器—输入—里添加要使用的lib,在连接器—常规—附加库目录添加lib的目录C++加载dll的方法(参考网址https://www.cnblogs.com/woshitianma/p/3681745.html)一、先介绍dll导出要使用的函数的方法。dll中导出函数有两种方法:1、在函数声明中加上__declspec(dll...原创 2018-06-27 11:43:48 · 5298 阅读 · 0 评论 -
C++在一个类中定义另一个有参数构造函数的类的对象
class A{public: A( int i ){}};class B {public: B():a(1){} //或:B( int i ):a( i ){ }。对a提供参数一定要按 //这种形式,在冒号后,不能在花括号里面!private: A a;};void main(){ B b;}注意: 在B中定义 A a...原创 2018-07-03 11:51:54 · 11591 阅读 · 3 评论 -
C++二叉排序树代码实现
以下是C++控制台程序,实现了二叉排序树的创建和遍历,仅是练习的小程序,分享一下。#include "stdafx.h"#include <iostream>using namespace std;//二叉树节点struct BiTree { int data; BiTree* lchild; BiTree* rchild;};int main(){ BiTree* InsertBST...原创 2018-07-12 10:06:03 · 1129 阅读 · 0 评论 -
C语言32位系统下基本类型数据所占字节数
char :1个字节 short int : 2个字节 int: 4个字节 unsigned int : 4个字节 float: 4个字节 double: 8个字节 long: 4个字节 long long: 8个字节 unsigned long: 4个字节char*(即指针变量): 4个字节(32位的寻址空间是2^32, 即32个bit,也就是4个字节。同理64位编译器) 所有类型的指针变量都是...原创 2018-07-12 16:29:28 · 7129 阅读 · 0 评论 -
c++字符前面的L和_T
字符串前面加L表示该字符串是Unicode字符串。_T是一个宏,如果项目使用了Unicode字符集(定义了UNICODE宏),则自动在字符串前面加上L,否则字符串不变。因此,Visual C++里边定义字符串的时候,用_T来保证兼容性。VC支持ascii和unicode两种字符类型,用_T可以保证从ascii编码类型转换到unicode编码类型的时候,程序不需要修改。以下是别人的总结:一、在字符串...转载 2018-07-12 17:06:28 · 1863 阅读 · 1 评论 -
wstring和string到底有啥区别
在中国,wstring的存在主要是因为有汉字。typedef basic_string<char, char_traits<char>, allocator<char> > string;typedef basic_string<wchar_t, char_traits<wchar_t>, allocator<wchar_t> &g...转载 2018-07-12 17:13:15 · 2108 阅读 · 0 评论 -
C++单链表的实现
下面是自己写的C++控制台项目,包括单链表的一些常规操作的实现,仅作练习使用,分享一下。#include "stdafx.h"#include <iostream>struct ListNode{ int data; ListNode* next;};typedef ListNode LNode;typedef ListNode* LinkList;int main(){ //函数声明...原创 2018-07-06 10:25:53 · 412 阅读 · 0 评论