Win32技术开发
若水微韧
专注于3d游戏开发,专注于C++11、STL、win32、mfc、OpenGL编程,开发属于自己3D的游戏
展开
-
C++逐行解析Txt文本文件,并将相应的字符串转换为double等类型
直接上代码// ReadTxt.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。//#include<iostream>#include <vector>#include <fstream>#include <sstream>#include <string>using namespace std;struct CoordinateData{ //double x, y, z, a, b, c原创 2021-05-28 13:51:01 · 917 阅读 · 0 评论 -
类对象引用计数使用模板实现(奇特的递归模板模式)
有时候我们需要跟踪一个类的对象个数,又不想为每一个类去实现引用计数,我们可以使用继承思维去实现这一目标。#include "stdafx.h"#include using namespace std; class Counted {private: static int count;public: Counted() { ++count; } Counted(cons原创 2017-04-16 11:42:40 · 551 阅读 · 0 评论 -
windows下获得一个指定文件路径下的所有文件
windows下获得一个指定文件路径下的所有文件// GetAllFiles.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #include #include #include #include #include #ifdef WIN32#include #include #endifusing namespac原创 2017-03-12 18:05:59 · 1242 阅读 · 1 评论 -
C++11中的委派构造函数
C++11中的委派构造函数:与继承构造函数类似。委托构造函数也是c++11中对c++的构造函数的一项改进,其目的就是减少程序员写构造函数的时间。通过委派其他构造函数,多构造函数的类编写起来就很简单容易。比如:原来很冗余的代码// ConsoleApplication3.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include us原创 2016-11-05 16:04:59 · 977 阅读 · 0 评论 -
C++ public protected private成员访问权限解读
C++ public protected private成员访问权限解读三种访问权限public:可以被任意实体访问protected:只允许子类及本类的成员函数访问private:只允许本类的成员函数访问三种继承方式public 继承protect 继承private 继承组合结果基类中 继承方式 子类中原创 2016-04-21 21:50:23 · 1549 阅读 · 0 评论 -
函数指针的应用比较排序与冒泡排序指针完成
// 利用函数指针来实现比较排序 冒泡排序// test.cpp : Defines the entry point for the console application.//#include "stdafx.h"#include using namespace std;void max_min(int* p, int m, int* max, int* min);void原创 2016-04-29 19:48:50 · 1071 阅读 · 0 评论 -
DOSbox汇编集成环境下的详细设置
alt+enter可以全屏幕,如果觉得游戏运行速度不合适,可以修改 cycles=3000,将3000适当调整大小。3。运行 DOSBox,会打开两个 DOS窗口,我们只需在如下窗口中键入mount c h:\pal 此命令的作用为将 h:\pal挂载为 C 盘,h:\pal 为《仙剑奇侠传》所在目录。4。键入 c:进入 C 盘,键入 pal.exe原创 2016-03-27 22:11:00 · 5311 阅读 · 0 评论 -
win7win8 64位汇编开发环境合集安装与设置
win7win8 64位汇编开发环境合集安装与设置下载 win7 win8 64位汇编开发环境.rar 下载地址打开DOSBox0.74-win32-installer.exe进行安装将debug.exe,edit.com,link.exe,masm.exe这几个程序复制到d:\myassembly文件夹下即可找到你安装的路径文件夹下,以记事本打开文件:DOSBox 0.74 Opt原创 2016-03-27 22:06:33 · 1960 阅读 · 0 评论 -
qt中的中文路径读取失败解决问题 const char * ->QString
const char *pStr = "QT中文路径的问题";QString fileName = QString::fromLocal8Bit(pStr);原创 2018-05-04 10:19:55 · 1154 阅读 · 0 评论 -
程序员应该思索的那些事
程序员每天该做的事 1、总结自己一天任务的完成情况 最好的方式是写工作日志,把自己今天完成了什么事情,遇见了什么问题都记录下来,日后翻看好处多多 2、考虑自己明天应该做的主要工作 把明天要做的事情列出来,并按照优先级排列,第二天应该把自己效率最高的时间分配给最重要的工作 3、考虑自己一天工作中失误的地方,并想出避免下一次再犯的方法 出错不要紧,最重要的是不要重复犯相同翻译 2018-02-03 00:35:40 · 487 阅读 · 1 评论 -
德罗内三角形剖分生成以及opengl显示
Delaunay 三角网的优点是结构良好, 数据结构简单, 数据冗余度小, 存储效率高, 与不规则的地面特征和谐一致,可以表示线性特征和迭加任意形状的区域边界, 易于更新,可适应各种分布密度的数据等; 它的局限性是, 算法实现比较复杂和困难, 但现在已经有了较多成熟的实现算法。 Delaunay 三角网是Voronoi图的伴生图形, 它们两个是被普遍接受和采用的分析研究区域离散数据的有力工具。它是原创 2017-12-06 22:13:25 · 1220 阅读 · 0 评论 -
const std::string转换为const wchar_t* string
由const std::string转换为const wchar_t* stringc++代码:const std::string text = "汉语";std::wstring szDst; { int len = MultiByteToWideChar(CP_ACP, 0, (LPCSTR)text.c_str(), -1, NULL, 0); wchar_t原创 2017-11-24 15:13:09 · 3628 阅读 · 0 评论 -
c++11多线程编程参数传递若干问题
随着计算机处理器多核的出现,程序员编写多线程的需求越来越大。当处理互相独立的任务时,我们可以更好的使用多核的多线程的效率,可以很大的提高运行速度,但是有时候提高的速度并不是成倍的提高,因为有的操作系统访问数据的命中率可能会降低,因为当操作系统切换线程的时候,我们访问的数据会有较大的差别。因此,多线程并不一定能够成倍提高运行速度。在c++11编程中,我们使用多线程的方法非常的简单,如果我们处理的任务原创 2017-11-30 17:19:30 · 1930 阅读 · 0 评论 -
快速排序
快速排序效率较高,采用分治策略,平均时间nlogn主要使用了递归算法和子数组划分,关键之处在于子数组的划分问题上,由于在原址上进行数据的修改,不必合并子数组直接上代码:// QuickSort.cpp : 定义控制台应用程序的入口点。//#include "stdafx.h"#include #define NUM 10int ParticalSort(int a[],原创 2017-11-28 21:31:24 · 330 阅读 · 0 评论 -
Git版本控制命令学习
1.配置本地用户和邮箱 git config --global user.name "liuchuang" // 设置用户名 git config --global user.email "[email protected]"// 设置邮箱名到此Git客户端已安装及GitHub配置完成,现在可以从GitHub传输代码了2.git init 将一个目录初始化文Git仓库在一原创 2017-10-27 12:45:21 · 275 阅读 · 0 评论 -
C语言中动态申请连续的二维数组
可以采用多申请一些指针,然后这一些指针分别指向后面数据区中对应的位置,如一个3*4的int类型数组,我们先申请大小为sizeof(int*) * 3 + 3 * 4 * sizeof(int)的一维数组设为arr。然后arr[0]存放指向arr + sizeof(int*) * 3这个位置的指针,arr[1]存放指向arr + sizeof(int*) * 3 + 4 * sizeof(int原创 2016-03-12 10:28:42 · 2074 阅读 · 1 评论 -
计算机科学专业必读的44册经典著作
中文名称:计算机科学经典著作英文名称:Computer Science版本:简介:1.The Art of Computer Programmin Author: Donald.E.Knuth Book Info: 这部书被誉为20世纪最重要的20部著作之一,与Einstein的"相对论"并列,是计算机科学领域的权威著作.全书共分7卷,目前已经出版了转载 2016-04-04 13:39:50 · 8159 阅读 · 0 评论 -
三维裁剪(OpenGL)glClipPlane(GLenum plane, const GLdouble *equation)
在opengl里的裁减函数实现很容易,//void glClipPlane(GLenum plane, const GLdouble *equation);//定义一个裁剪平面。equation参数指向平面方程Ax + By + Cz + D = 0的4个系数。//equation = (0, - 1,0, 0),前三个参数(0, - 1, 0)可以理解为法线向下,//只有向下的,原创 2015-10-26 20:02:58 · 4972 阅读 · 0 评论 -
OpenGL Blend 和OpenGL中alpha测试GL_ALPHA_TEST
OpenGL Blend 和OpenGL中alpha测试GL_ALPHA_TEST 像素的Alpha值可以用于混合操作什么是混合呢?简单地说,就是当你透过一块红色的玻璃去看一个绿色的球时,此时就会发生颜色的混合现象,你看到的球的颜色将是两者的混合颜色。这在OpenGL里面有特殊的处理颜色混合的函数,比较常用GL_BLEND要使用OpenGL的混合功能,调用:glEnable(GL原创 2015-11-11 19:42:50 · 3840 阅读 · 0 评论 -
#define M(row,col) m[col*4+row]宏定义代码全解
#define宏定义解释:对于宏定义来说熟悉编程语言的爱好者都不会感到陌生,其实宏定义的用处很多宏定义是C语言提供的预处理功能,其简单格式为#define 标识符 字符串,掌握"宏"概念的关键是“换”。一切以换为前提、做任何事情之前先要换,准确理解之前就要“换”。即在对相关命令或语句的含义和功能作具体分析之前就要换。#define M(row,col) m[col*4+原创 2015-10-24 12:54:22 · 1472 阅读 · 0 评论 -
视图模型转换矩阵的推导也是关于gluLookAt函数即视图转换矩阵的推导及代码实现
关于gluLookAt函数即视图转换矩阵的推导及代码实现视图模型转换矩阵的推导也是关于gluLookAt函数即视图转换矩阵的推导及代码实现 gluLookAt函数提供给用户完成模式变换(model-view transformation)中,在将模型坐标系转换都世界坐标系后,进行世界坐标系到照相机坐标系的转换。实际上,照相机的定位也是在世界坐标系下定义的,这里的转换,可以理解为:原创 2015-11-06 23:45:43 · 4730 阅读 · 0 评论 -
OpenGL多视口变换函数:glViewport使用
OpenGL多视口变换函数:glViewport使用glViewport是OpenGL中的一个函数。计算机图形学中,在屏幕上打开窗口的任务是由窗口系统,而不是OpenGL负责的1.功能glViewport在默认情况下,视口被设置为占据打开窗口的整个像素矩形,如图1,窗口大小和设置视口大小相同,所以为了选择一个更小的绘图区域,就可以用glViewport函数来实现这一变换,在原创 2015-11-07 13:49:16 · 7291 阅读 · 0 评论 -
OpenGL模型视图变换、投影变换、视口变换总结
产生目标场景的过程类似于用照相机进行拍照:(1)把照相机固定在三角架上,并让他对准场景 从不同位置观察场景(视图变换)(2)对场景进行安排,使各个物体在照片中的位置是我们所希望的 移动,旋转或者放大缩小场景中的物体(模型变换)(3)选择照相机镜头,并调整放大倍数(调焦) 显示物体时,可以选择物体是如何投影到屏幕上(投影变换)(4)原创 2015-11-06 16:27:34 · 1935 阅读 · 0 评论 -
Win32下的API函数
查阅资料在这里总结下Win32下的API函数一、窗口函数(Window) = = = = = = = = = = = = = = == = = = = = = = = = = = = = = = = = = = = = = = = = = = = = ==原创 2015-10-21 09:51:53 · 2911 阅读 · 1 评论 -
MFC的API函数大全
目录API函数大全...11.API之网络函数...12. API之消息函数...13. API之文件处理函数...24. API之打印函数...55. API之文本和字体函数...76. API之菜单函数...87. API之位图、图标和光栅运算函数...98. API之绘图函数...119. API之设备场景函数...原创 2015-10-21 09:46:11 · 5424 阅读 · 0 评论 -
错误 1 error LNK2019: 无法解析的外部符号 __imp____glutInitWithExit@12,该符号在函数 _glutInit_ATEXIT_HACK@8 中被引用
解决方案:在主cpp文件里加上宏定义:#define GLUT_DISABLE_ATEXIT_HACK且位于#include 之前成功解决此问题原创 2015-10-26 17:13:41 · 1088 阅读 · 0 评论 -
vs2010 vs2013等vs中如何统计整个项目的代码行数
vs2010 vs2013等vs中如何统计整个项目的代码行数在一个大工程中有很多的源文件和头文件,我如何快速统计总行数?------解决方案--------------------b*[^:b#/]+.*$^b*[^:b#/]+.*$ctrl + shift + F 查找选项选 正则表达式具体步骤:1.鼠标停靠在你的项目解决方案附近如图所示:原创 2015-11-13 22:55:06 · 34591 阅读 · 0 评论 -
大学里关于计算机图形学的感悟《自嘲》
临近考试了。有一天,我去图书馆看书,相识了一个学电子专业的同学。刚找到座位坐下便一眼看到一个很“熟悉”的人,这哥们与我真投缘,二话不说便自然而然地结交为挚友。为此,装在彼此心中关于专业中比较闷骚的见解一时间在对话中表现地淋漓尽致。哥们: 你是哪个专业的?我: 计算机的。andyou?哥们: 我是学电子的。计算机专业听起来不错嘛,你是计算机哪个方面的?我: Cod原创 2016-04-03 23:02:35 · 3653 阅读 · 0 评论 -
dos批处理命令详解
一.简单批处理内部命令简介 1.Echo 命令 打开回显或关闭请求回显功能,或显示消息。如果没有任何参数,echo 命令将显示当前回显设置。 语法: echo [{on│off}] [message] Sample:@echo off / echo hello world 在实际应用中我们会把这条命令和重定向符号(也称为管道符号,一般用> >翻译 2016-04-03 18:34:39 · 4825 阅读 · 0 评论 -
计算机图形学三角形基元填充算法即三角形光栅化重心双线性插值算法
计算机图形学三角形基元填充算法即三角形光栅化重心双线性插值算法 我们学过数学知识的人,都知道直线的隐函数:f01(x,y)=(y0-y1)*x+(x1-x0)*y+x0*y1-x1*y0这个函数的好处在于计算机计算时无需进行除法操作指令,我们学过汇编指令的都知道计算机在除法指令运行很多个周期才能计算出一个高度精确的结果。所以,在这里巧妙地回避了除法运算。那么,三角形的光删化步骤如下原创 2016-04-03 18:30:22 · 8135 阅读 · 2 评论 -
法线贴图原理
法线贴图的出现,是为了低面数的模型模拟出高面数的模型的" 光照信息 ".光照信息最重要的当然是光入射方向与入射点的法线夹角.法线贴图本质上就是记录了这个夹角的相关信息.光照的计算与某个面上的法线方向息息相关.我们知道计算机里的模型,是通过多个多边形面组合来近似模拟一个物体的.它不是圆滑的.面数越多,则越接近真实物体.光照到某个面当中的一点时,法线是通过这个面的几个顶点通过插值得到的原创 2016-04-03 18:12:39 · 2883 阅读 · 0 评论 -
基于对话框MFC按Enter键或者Ese退出的解决方法
基于对话框MFC按Enter键或者Ese退出的解决方法今天在用VC++6.0写数据库软件时。偶然发现单击回车键enter时,程序会突然退出。并且窗口开始时的默认确定按钮已经被我删除了,所以必要的措施必然做出,VC MFC 屏蔽ESC和ENTER键关闭对话框解决途径:在你的C...Dlg.h文件中添加重载函数PreTranslateMessage(MSG* pMsg)原创 2015-11-17 17:04:37 · 5963 阅读 · 0 评论 -
OpenGL天空贴图以及反射纹理映射即镜面反射
编程中一个好的天空贴图会给玩家带来舒适的感觉,还有那对周围物体的反射光映射到球、等物体上或许是一个特别愉悦的事件,然而这在opengl里实现又不太难,请看下面的代码:#include #include #define GLUT_DISABLE_ATEXIT_HACK#include #include #include // 摄像机参数static float cameraTh原创 2015-10-31 21:15:14 · 4645 阅读 · 1 评论 -
error RC2108: expected numerical dialog constant vs2013等vs 平台常见问题
error RC2108: expected numerical dialog constant vs2013等vs 平台常见问题原因就是:所有问题的关键就是,VS2013里面不能修改控件解决问题: 把资源文件这行 CONTROL IDB_BITMAPMYMOTTO,IDB_BITMAPMYMOTTO,8,7,18,30,NOT WS_GROUP改成下面的就原创 2015-11-16 14:03:31 · 3175 阅读 · 0 评论 -
进度条 游戏中Win32进度条ProcessBar的编码
进度条 游戏中Win32进度条ProcessBar的写法#include #include //InitCommonControls#pragma comment(lib, "comctl32") //InitCommonControls//过程函数的返回值都是LRESULT,类型都是CALLBACKLRESULT CALLBACK WndProc(HWND hwnd原创 2015-10-30 11:41:22 · 1528 阅读 · 0 评论 -
VS2013 中IntelliSense: "const char *" 类型的实参与 "LPCWSTR" 类型的形参不兼容
VS2013 中IntelliSense: "const char *" 类型的实参与 "LPCWSTR" 类型的形参不兼容多是字符集的问题:打开vs2013项目属性的常规项修改字符集,选择为多字符集选择多字符集点击确定再次编辑:运行成功原创 2015-10-20 20:37:18 · 4163 阅读 · 0 评论