- 博客(19)
- 收藏
- 关注
原创 OpenGL载入图片作为纹理
参考资料:《厦门大学计算机图像学教程》第4.1章#ifndef GL_TEXTURE_LOADER#define GL_TEXTURE_LOADERtypedef struct // 建立一个结构体{ GLubyte *imageData; // 图像数据 (最高32bit) GLuint bpp; //
2013-10-25 12:58:35 10123
原创 OpenGL光照设置,实现渲染效果
OpenGL实现具有凹凸感的渲染效果图一、设置光照1、设置光照成分环境光:环境光来自于四面八方。所有场景中的对象都处于环境光的照射中。漫射光:由特定的光源产生,并在您的场景中的对象表面上产生反射。处于漫射光直接照射下的任何对象表面都变得很亮,而几乎未被照射到的区域就显得要暗一些。这样在我们所创建的木板箱的棱边上就会产生的很不错的阴影效果。镜面光:2、指定光照位置
2013-10-25 10:52:13 2798
原创 Messagebox()的参数个数的问题.<归属类发生了变换>
在控制台和MFC中使用Messagebox()时,会出现参数要求个数不一样的问题。1、控制台工程messagebox 的3个参数和4个参数 { MessageBox("示例用法", "demo", MB_OK);}messagebox 的3个参数和4个参数 { MessageBox("示例用法", "demo", MB_OK);}为什么我不新建工程
2013-10-24 19:42:40 1142
原创 在MFC中,运用轨迹球算法实现鼠标旋转物体
参考资料:nehe教程第48课《轨迹球实现的鼠标旋转》1、在头文件中为Arcball添加变量 //为Arcball添加变量用来获取当前鼠标点 Point2fT MousePt;// NEW: Current Mouse Point 2、在源文件中对轨迹球参数初始化transform是我们获得的最终的变换矩阵lastRot是上一次鼠标拖动得到的旋转矩阵th
2013-10-23 20:27:27 2379
原创 单缓冲和双缓冲的概念、双缓冲的设置
单缓冲:实际上就是将所有的绘图指令在窗口上执行,就是直接在窗口上绘图,这样的绘图效率是比较慢的,如果使用单缓冲,而电脑比较慢,屏幕会闪烁。双缓冲:实际上的绘图指令是在一个缓冲区完成,这里的绘图非常的快,在绘图指令完成之后,再通过交换指令把完成的图形立即显示在屏幕上,这样所有的画在同一个瞬间改变,就不会造成闪烁的现象了。一般用OpenGL绘图都是用双缓冲,单缓冲一般只用于显示单独的一副非
2013-10-23 19:34:58 2868
原创 String转char *,以便于使用fun(char *)函数
假设我要使用一个别人写好的f(char *)函数,但是我只有一个string对象 string s="hello"因为f的参数类型是char*, 而s的类型是string,那该怎么办呢?一、尝试一:使用c_str()函数 (×)好在string类提供了一个c_str函数,能够返回底层的char*指针所以我们打算这样用:f(s.c_str())但是这是错误的,因为c_str返
2013-10-22 19:14:00 596
原创 #pragma once&&#ifndef解释:头文件只被编译一次
一、#pragma once&&#ifndef解释#pragma once这是一个比较常用的C/C++杂注,只要在头文件的最开始加入这条杂注,就能够保证头文件只被编译一次。#ifndef,#define,#endif是C/C++语言中的宏定义,通过宏定义避免文件多次编译。所以在所有支持C++语言的编译器上都是有效的,如果写的程序要跨平台,最好使用这种方式。二、具体写法
2013-10-21 13:04:49 599
原创 MFC菜单栏check设置:使菜单项前带有勾选标志,再点击消失的实现
一、要实现的效果图:二、实现:1、右击菜单项属性,将checked设置为ture。2、右击菜单项属性,添加事件处理程序,消息类型设置为:update_command_ui.
2013-10-21 11:19:15 8720
转载 MFC窗口启动最大化
常用MFC进行编程的人都知道单文档的编程,在编程过程中发现欲使程序在启动时就能最大化显示,这里的处理方法有多种,但是结果却不一样。首先大家最常用的就是在View类的PreCreateWindow函数中,修改窗口类型cs的值,也就是或上一个“最大化”即:[cpp] view plaincopycs.style |= WS_MAXIMIZE;
2013-10-21 11:08:55 643
原创 <MFC>CString和<C++>标准库string的区别,及判断字符串是否为空
一、CString 和string 的区别1、string和CString均是字符串模板类,2、string为标准模板类(STL)定义的字符串类,已经纳入C++标准之中;CString(typedef CStringT> CString)为Visual C++中最常用的字符串类,继承自CSimpleStringT类,主要应用在MFC和ATL编程中,主要数据类型有char(应用于ANS
2013-10-21 11:05:31 2316
原创 MessageBox()的错误解决、_T()和L的解释和区别
一、MessageBox(); 使用时出现的错误解决办法在MFC中用MessageBox("内容","标题",MB_OKCANCEL);有时候会出现 “CWnd::MessageBoxW”: 不能将参数 1 从“const char [19]”转换为“LPCTSTR”解决办法一:未设置unicode数据集就可以解决 MessageBox("内容","标题",M
2013-10-21 10:16:54 4710
原创 fstram.open()的实参形参问题
一、fstream file;file.open(str.c_str());open函数的实参应该为C风格字符串,还不是标准库string对象。调用c_str()转换成c风格字符串。二、//做形参可以用指针、引用。//这里用指向char字符串的指针做形参void CLoadObj::readobj(const char* str)fstream objfile
2013-10-20 22:30:22 557
原创 解决fstream.open()不能正确读取中文路径的问题
解决fstream.open()不能正确读取中文路径的问题std::locale loc = std::locale::global(std::locale(""));//必须添加下面这句恢复,否则std::cout将无法正确输出中文名std::locale::global(loc);
2013-10-20 22:27:33 1554
原创 OpenGL创建MFC单文档框架
参考资料:《OpenGL高级编程与可视化系统开发》 第2.3节2.3 基于单文档的OpenGL图形程序的基本框架 我按照教程一步步操作,屏幕始终不能正确显示背景和图像。我犯的错误在于:解决办法:必须在类的属性窗口,在消息中添加消息响应函数,不能仅仅是复制代码。
2013-10-16 16:22:51 627
原创 <MFC>消息对话框的创建弹出
一、MFC消息对话框MessageBox()函数和AfxMessageBox()函数1.CWnd::MessageBox()函数 CWnd::MessageBox()的函数原型如下: int MessageBox( LPCTSTR lpszText, LPCTSTR lpszCaption = NULL,
2013-10-16 16:16:48 683
原创 <MFC>打开文件和保存文件对话框
文件对话框分为打开文件对话框和保存文件对话框。 文件对话框类CFileDialog MFC使用文件对话框类CFileDialog封装了对文件对话框的操作。CFileDialog类的构造函数原型如下:explicit CFileDialog( BOOL bOpenFileDialog, LPCTSTR lpszDefExt = NULL, LPCTST
2013-10-16 16:14:49 1151
原创 <MFC>消息对话框的创建弹出
一、MFC消息对话框MessageBox()函数和AfxMessageBox()函数1.CWnd::MessageBox()函数 CWnd::MessageBox()的函数原型如下: int MessageBox( LPCTSTR lpszText, LPCTSTR lpszCaption = NULL,
2013-10-16 16:12:52 880
原创 <MFC>模态对话框和非模态对话框的创建弹出
一、模态对话框的创建及显示1、Windows对话框分为两类:模态对话框和非模态对话框。 模态对话框:当它弹出后,本应用程序其他窗口将不再接受用户输入,只有该对话框响应用户输入,在对它进行相应操作退出后,其他窗口才能继续与用户交互。非模态对话框:它弹出后,本程序其他窗口仍能响应用户输入。非模态对话框一般用来显示提示信息等。 2、模态对话框的弹出
2013-10-16 16:10:16 3411
原创 <MFC>创建对话框和新建对话框类
参考资料:《鸡啄米的IT博客》VS2010/MFC编程入门教程之目录和总结http://www.jizhuomi.com/software/257.html创建对话框主要分两大步,第一,创建对话框资源,主要包括创建新的对话框模板、设置对话框属性和为对话框添加各种控件;第二,生成对话框类,主要包括新建对话框类、添加控件变量和控件的消息处理函数等。
2013-10-16 16:07:30 7656
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人