VC,DirectX8开发实例(画面的清除和描画)
//
// VC,DirectX8开发实例(画面的清除和描画)
// IDirect3DDevice8::Clear()函数使用
#include <windows.h>
#include <d3d8.h>
#define TITLE TEXT("Kitty on your lap")
IDirect3D8 * pDirect3D;
IDirect3DDevice8 * pD3Device;
D3DPRESENT_PARAMETERS d3dpp;
LRESULT CALLBACK WndProc(HWND hWnd , UINT msg , WPARAM wp , LPARAM lp) {
switch (msg) {
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_PAINT:
if (!pD3Device) break;
pD3Device->Clear(0 ,
NULL , //Clear全体
D3DCLEAR_TARGET ,//指定Clear对象,blankの色にする
D3DCOLOR_XRGB(0 , 0 , 0) ,//清楚后显示的颜色
1.0 , //Z值,0.0 ~ 1.0 までの深度バッファに保存する
0); //指定为各StencilBuffer的报名保存的整数价值,
//0 ~ 2n - 1 までの
//IDirect3DDevice8::Present()
pD3Device->Present(NULL,// 全体が対象となります
NULL,//
NULL,//
NULL);//
ValidateRect(hWnd , NULL);
return 0;
}
return DefWindowProc(hWnd , msg , wp , lp);
}
int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
PSTR lpCmdLine , int nCmdShow) {
MSG msg;
HWND hWnd;
WNDCLASS winc;
D3DDISPLAYMODE d3ddm;
pDirect3D = Direct3DCreate8(D3D_SDK_VERSION);
pDirect3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT , &d3ddm);
ZeroMemory(&d3dpp , sizeof(D3DPRESENT_PARAMETERS));
d3dpp.BackBufferFormat = d3ddm.Format;
d3dpp.BackBufferCount = 1;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.Windowed = TRUE;
winc.style = CS_HREDRAW | CS_VREDRAW;
winc.lpfnWndProc = WndProc;
winc.cbClsExtra = winc.cbWndExtra = 0;
winc.hInstance = hInstance;
winc.hIcon = LoadIcon(NULL , IDI_APPLICATION);
winc.hCursor = LoadCursor(NULL , IDC_ARROW);
winc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
winc.lpszMenuName = NULL;
winc.lpszClassName = TEXT("KITTY");
if (!RegisterClass(&winc)) return 0;
hWnd = CreateWindow(
TEXT("KITTY") , TITLE , WS_OVERLAPPEDWINDOW | WS_VISIBLE ,
CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT ,
NULL , NULL , hInstance , NULL
);
if (!hWnd) return 0;
pDirect3D->CreateDevice(
D3DADAPTER_DEFAULT , D3DDEVTYPE_HAL , hWnd ,
D3DCREATE_SOFTWARE_VERTEXPROCESSING , &d3dpp , &pD3Device
);
while (GetMessage(&msg , NULL , 0 , 0 )) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
pDirect3D->Release();
pD3Device->Release();
return msg.wParam;
}
本章我想在设备里(上)进行绘画。比起前几章要难,因为加入了Z坐标系。
//
//IDirect3DDevice8::Reset()方法使用
//
#include <windows.h>
#include <d3d8.h>
#define TITLE TEXT("Kitty on your lap")
IDirect3D8 * pDirect3D;
IDirect3DDevice8 * pD3Device;
D3DPRESENT_PARAMETERS d3dpp;
LRESULT CALLBACK WndProc(HWND hWnd , UINT msg , WPARAM wp , LPARAM lp) {
switch (msg) {
case WM_DESTROY:
PostQuitMessage(0);
return 0;
case WM_PAINT:
if (!pD3Device) break;
pD3Device->Clear(0 , NULL , D3DCLEAR_TARGET ,
D3DCOLOR_XRGB(0 , 0 , 0) , 1.0 , 0);
pD3Device->Present(NULL,NULL,NULL,NULL);
ValidateRect(hWnd , NULL);
return 0;
case WM_SIZE://如果窗体大小发生变化,执行此事件
if (!pD3Device) return 0;
d3dpp.BackBufferWidth = LOWORD(lp);
d3dpp.BackBufferHeight = HIWORD(lp);
pD3Device->Reset(&d3dpp);// 表示新的设备的状态
InvalidateRect(hWnd , NULL , TRUE);
return 0;
}
return DefWindowProc(hWnd , msg , wp , lp);
}
int WINAPI WinMain(HINSTANCE hInstance , HINSTANCE hPrevInstance ,
PSTR lpCmdLine , int nCmdShow) {
MSG msg;
HWND hWnd;
WNDCLASS winc;
D3DDISPLAYMODE d3ddm;
pDirect3D = Direct3DCreate8(D3D_SDK_VERSION);
pDirect3D->GetAdapterDisplayMode(D3DADAPTER_DEFAULT , &d3ddm);
ZeroMemory(&d3dpp , sizeof (D3DPRESENT_PARAMETERS));
d3dpp.BackBufferFormat = d3ddm.Format;
d3dpp.BackBufferCount = 1;
d3dpp.SwapEffect = D3DSWAPEFFECT_DISCARD;
d3dpp.Windowed = TRUE;
winc.style = CS_HREDRAW | CS_VREDRAW;
winc.lpfnWndProc = WndProc;
winc.cbClsExtra = winc.cbWndExtra = 0;
winc.hInstance = hInstance;
winc.hIcon = LoadIcon(NULL , IDI_APPLICATION);
winc.hCursor = LoadCursor(NULL , IDC_ARROW);
winc.hbrBackground = (HBRUSH)GetStockObject(WHITE_BRUSH);
winc.lpszMenuName = NULL;
winc.lpszClassName = TEXT("KITTY");
if (!RegisterClass(&winc)) return 0;
hWnd = CreateWindow(
TEXT("KITTY") , TITLE , WS_OVERLAPPEDWINDOW | WS_VISIBLE ,
CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT , CW_USEDEFAULT ,
NULL , NULL , hInstance , NULL
);
if (!hWnd) return 0;
pDirect3D->CreateDevice(
D3DADAPTER_DEFAULT , D3DDEVTYPE_HAL , hWnd ,
D3DCREATE_SOFTWARE_VERTEXPROCESSING , &d3dpp , &pD3Device
);
while (GetMessage(&msg , NULL , 0 , 0 )) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
pDirect3D->Release();
pD3Device->Release();
return msg.wParam;
}
VC,DirectX8开发实例(画面的清除和描画)相关推荐
- AutoCAD ObjectARX(VC)开发基础与实例教程2014版光盘镜像
AutoCAD ObjectARX(VC)开发基础与实例教程2014,最新版,光盘镜像 作者:张帆 朱文俊 编著 出版社:中国电力出版社 出版时间:2014年6月 点击一下 转载于:https://w ...
- 《Unity 3.x游戏开发实例》一第2章 让我们从天空开始
本节书摘来异步社区<Unity 3.x游戏开发实例>一书中的第2章,第2.1节,作者: [加]Ryan Henson Creighton 译者: 师蓉 责编: 陈冀康,更多章节内容可以访问 ...
- [转载]J2ME游戏开发实例讲解
J2ME游戏开发实例讲解 一.序言 昨天在网上闲逛,发现一篇讲解用delphi实现华容道游戏的文章,颇受启发.于是,产生了将华容道游戏移植到手机中去的冲动.现在手机游戏琳琅满目,不一而足,华容道的实现 ...
- J2me游戏开发实例讲解(华容道)
j2me游戏开发实例讲解 (加入日期:2003-10-10 点击数:1541) [对此文发表评论]?[编程爱好者论坛] [保存文章至硬盘] ?[打印文章] Borland开发讨论区 微软开发讨论区 C ...
- 《Unity 3.x游戏开发实例》——2.10节注意
本节书摘来自异步社区<Unity 3.x游戏开发实例>一书中的第2章,第2.10节注意,作者 [加]Ryan Henson Creighton,更多章节内容可以访问云栖社区"异步 ...
- c++程序设计_基于proteus的51单片机开发实例30-模块化程序设计
1. 基于proteus的51单片机开发实例30-模块化程序设计 1.1. 实验目的 模块化程序设计 不知不觉我们的51单片机开发实例已经进行到第三十篇了,是时候进行一个总结和反思了,总结什么?反思什 ...
- poll接口《来自Linux驱动程序开发实例》
您所在的位置:读书频道 > 操作系统 > Linux > 1.2.7 poll接口 1.2.7 poll接口 2012-05-22 13:38 冯国进 机械工业出版社 我要评论(0) ...
- Linux USB 驱动开发实例(七)—— 基于USB 总线的无线网卡浅析
回顾一下USB的相关知识 USB(Universal Serial Bus)总线又叫通用串行外部总线, 它是20世纪90年代发展起来的.USB接口现在得到了广泛的应用和普及,现在的PC机中都带有大量的 ...
- 笔记2:VC++ socket通信实例
VC++ socket通信实例 网络中进程之间如何通信 首要解决的问题是如何唯一标识一个进程,在本地可以通过进程PID来唯一标识一个进程,但是在网络中这是行不通的.其实TCP/IP协议族已经帮我们 ...
最新文章
- Nature:首个肠道微生物对药物代谢影响的系统性研究
- 机器学习工程师正在失业,但学习依旧是唯一的出路
- 线程技术 ☞ Future模式
- sudo su su_Spring Security应用程序中的su和sudo
- php动态数组的用法
- python-爬虫学习(文字、图片、视频)
- minikube start 使用Hyper-V
- python 字符串函数_Python字符串函数
- python中列表用什么表示_python中的列表
- 兰州烧饼 NYOJ--779
- 使用DevExpress的PdfViewer实现PDF打开、预览、另存为、打印(附源码下载)
- 零基础入门学习汇编语言~基础知识~机器语言与汇编语言的产生及组成
- 华为x86服务器销售额,x86服务器销量排行
- 剑三 服务器状态查询,数据互通全面启动_剑侠情缘网络版叁_金山游戏官方网站_金山逍遥Xoyo.com...
- MATLAB获取Excel指定行列数据及删除指定行数据
- 首款物联网防火墙himqtt开源
- 【转】似大地水准面精化
- markdown转pdf
- PHP AJAX Promise
- Kalman滤波器从原理到实现
热门文章
- Linux shell: ls命令详解
- 线性规划与非线性规划的求解
- 若依前后端分离框架——初始化参数功能源码学习
- win10如何调整计算机时间同步,Win10系统如何设置时间同步间隔?修改时间同步频率的方法...
- RANSAC如何动态更新最大迭代次数
- unity怎么显示骨骼_Unity骨骼动画的总结
- hive后台启动_将Hive Thrift server 添加到服务后台运行 | 学步园
- PLSQL连接Oracle:ORA-12154: TNS: 无法解析指定的连接标识符
- 关于SEO与搜索引擎排名现状分析与SEO去向
- jQuery serialize()、serializeArray()方法实现表单序列化