为什么 dxut 下的例子 都是用父母让孩子独立的例子显卡启动的

2011年11月 专题开发/技术/项目大版内专家分月排行榜第一2011年10月 专题开发/技术/项目大版内专家分月排行榜第一2011年9月 专题开发/技术/项目大版内专家分月排行榜第一2011年8月 专题开发/技术/项目大版内专家分月排行榜第一2011年7月 专题开发/技术/项目大版内专家分月排行榜第一2011年6月 C/C++大版内专家分月排行榜第一
2011年7月 C/C++大版内专家分月排行榜第二2011年5月 专题开发/技术/项目大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。帖子很冷清,卤煮很失落!求安慰
手机签到经验翻倍!快来扫一扫!
如何查看现在用的是独显启动游戏还是核显启动游戏
17053浏览 / 12回复
主要有三种方式:1.最简便的右键高性能方式,我以自己的7的启动作为例子,启动方式如下图2.右键桌面可以打开NVIDIA设置,设置全局独显:或者双击NVIDIA在通知面板的图标,也可以打开NVIDIA设置:在全局设置那里设置为高性能NVIDIA处理器,即可以设置为全局独显3.添加程序到独显启动方式,还是以真三国无双7为例:可以在程序设置里面添加自定义程序。那么,如何知道自己现在是不是设置成功了呢?我们可以看到上图中,有个“桌面”的选项,勾选了第四项之后,你的通知面板会多出一个GPU的图标,一般情况下是这样的,如下图:表示没有独显启动的程序。如果这个时候你以独显方式启动一个程序之后,正常情况下是这样的:可以看到GPU活动里已经有真三国无双7的图标了。
楼主A卡怎么看呀?玩卡卡的是不是没有切换到独享呀?
哎呦不错哦,学习
很给力,谢谢分享
不是吧,这个好像是优化吧,不是什么核显和独显,插上了难道还插上?显示器插在显卡上难道还能用核显输出?
直接在CMOS设置里吧集成给关了,不就成了独显了嘛
顶顶顶顶顶顶顶顶顶顶顶顶。。。。。
原来可以这样,不错啊
您需要登录后才可以回帖&&&|&&&&&
用户名/注册邮箱/注册手机号
其他第三方号登录您所在位置: &
&nbsp&&nbsp&nbsp&&nbsp
3D游戏设计与开发——基于DXUT应用程序框架的DirectX开发.doc32页
本文档一共被下载:
次 ,您可免费全文在线阅读后下载本文档
文档加载中...广告还剩秒
需要金币:200 &&
你可能关注的文档:
··········
··········
3D游戏设计与开发
基于DXUT应用程序框架的DirectX开发
【摘要】视频游戏产业在娱乐业所占的比例越来越大,根据美国去年的调查显示,年美国的电子游戏产业的营业额已经超过了好莱坞的电影票房收入。可以看出这个市场有着巨大的潜力,当然在我国也不例外。但是由于种种已知原因,这个行业在我国还处于比较落后的局面,缺乏各种核心的技术,尤其是当游戏引擎――这种集软件行业顶尖智慧于一身的开发形式面世后,大大加速了各种游戏的开发效率。而大部分的游戏引擎技术都掌握在欧美手里,这种软件的开发难度又不亚于操作系统的编写难度,几家核心游戏引擎的开发商也因此大大的赚了个盆丰钵满。既然要为了这个远大的目标而奋斗,一个基于DirectX技术所开发的3D游戏实验性项目便成为了我这次的选题
【关键词】游戏引擎;图形学;自主开发 DirectX
现今游戏市场背景
从某种意义上来说,电子游戏这的开发市场主要以欧美一些主流游戏开发商为主,包括了市面上现在流行的单机或网络游戏都是如此,国内市场鲜有沾光。造成这种局面的原因比较复杂,一是国内在计算机专业领域起步非常晚,尤其是计算机娱乐和多媒体这个领域更是如此,二是国内的游戏市场始终打不开局面。在PC平台上的单机游戏正热火朝天的时候,国内其实也有点这种乘胜追击的势头,比如当年以仙剑为主的一系列武侠RPG游戏也给了我们这一代人不少少年时候的美好回忆。可惜当时国内的单机游戏市场黯淡无光的主要原因是因为被盗版这个始终挥之不去的毒瘤给毁了,国内游戏制作人只能看着国外的同行们一个一个的成为百万富翁,而自己却只能改行或者默默的成为角落里的角色而暗
正在加载中,请稍后...1053人阅读
DXUT(13)
//--------------------------------------------------------------------------------------
// File: chap14_control_dx9.cpp
// Copyright (c) Microsoft Corporation. All rights reserved.
//--------------------------------------------------------------------------------------
#include &DXUT.h&
#include &SDKmisc.h&
#include &DXUTgui.h&
#include &DXUTsettingsdlg.h&
#include &resource.h&
#define IDC_TOGGLE_FULLSCREEN
#define IDC_TOGGLE_REF
#define IDC_CHANGE_DEVICE
#define IDC_COMBO
#define IDC_CHECK_BOX_1
#define IDC_CHECK_BOX_2
#define IDC_RADIO_1
#define IDC_RADIO_2
#define IDC_RADIO_3
#define IDC_BUTTON_1
#define IDC_BUTTON_2
#define IDC_RADIO_4
#define IDC_RADIO_5
#define IDC_SLIDER
#define IDC_EDIT
#define IDC_RADIO_GROUP_1
#define IDC_RADIO_GROUP_2
#define release_com(p) do{ if(p) {(p)-&Release();(p) = NULL;}} while(0)
// Global variable
ID3DXFont* g_
ID3DXSprite* g_text_
bool g_show_help =
/*知识点1:定义控件对象
---------------------------------------------
来自&&DXUT框架剖析(14)&&
---------------------------------------------
控件是用户接口的重要组成部分,为了便于用户操作,为程序界面添加各种控件是非常好的方法。DXUT框架为在Direct3D程序中添加各种控件提供了支持。
为了便于加载控件和处理各控件的消息,通常先在窗口中加载对话框,然后在对话框中添加响应的控件,由对话框来管理控件。为了统一管理各个对话框,
还需要定义对话框资源管理器类CDXUTDialogResourceManager的一个对象
CDXUTDialogResourceManager g_dlg_resource_
CD3DSettingsDlg g_settings_
CDXUTDialog g_button_
CDXUTDialog g_control_
//--------------------------------------------------------------------------------------
// Rejects any D3D9 devices that aren't acceptable to the app by returning false
//--------------------------------------------------------------------------------------
bool CALLBACK IsD3D9DeviceAcceptable( D3DCAPS9* pCaps, D3DFORMAT AdapterFormat, D3DFORMAT BackBufferFormat,
bool bWindowed, void* pUserContext )
// Typically want to skip back buffer formats that don't support alpha blending
IDirect3D9* pD3D = DXUTGetD3D9Object();
if( FAILED( pD3D-&CheckDeviceFormat( pCaps-&AdapterOrdinal, pCaps-&DeviceType,
AdapterFormat, D3DUSAGE_QUERY_POSTPIXELSHADER_BLENDING,
D3DRTYPE_TEXTURE, BackBufferFormat ) ) )
//--------------------------------------------------------------------------------------
// Before a device is created, modify the device settings as needed
//--------------------------------------------------------------------------------------
bool CALLBACK ModifyDeviceSettings( DXUTDeviceSettings* pDeviceSettings, void* pUserContext )
// If video card does not support hardware vertex processing, then uses software vertex processing.
if((DXUTGetD3D9DeviceCaps()-&DevCaps & D3DDEVCAPS_HWTRANSFORMANDLIGHT) == 0)
pDeviceSettings-&d3d9.BehaviorFlags = D3DCREATE_SOFTWARE_VERTEXPROCESSING;
static bool is_first_time =
if(is_first_time)
//if using reference device, then pop a warning message box.
if(pDeviceSettings-&d3d9.DeviceType == D3DDEVTYPE_REF)
DXUTDisplaySwitchingToREFWarning(pDeviceSettings-&ver);
//--------------------------------------------------------------------------------------
// Create any D3D9 resources that will live through a device reset (D3DPOOL_MANAGED)
// and aren't tied to the back buffer size
//--------------------------------------------------------------------------------------
HRESULT CALLBACK OnD3D9CreateDevice( IDirect3DDevice9* pd3dDevice, const D3DSURFACE_DESC* pBackBufferSurfaceDesc,
void* pUserContext )
V_RETURN(g_dlg_resource_manager.OnD3D9CreateDevice(pd3dDevice));
V_RETURN(g_settings_dlg.OnD3D9CreateDevice(pd3dDevice));
D3DXCreateFont(pd3dDevice, 18, 0, FW_BOLD, 1, FALSE, DEFAULT_CHARSET, OUT_DEFAULT_PRECIS, DEFAULT_QUALITY,
DEFAULT_PITCH | FF_DONTCARE, L&Arial&, &g_font);
return S_OK;
//--------------------------------------------------------------------------------------
// Create any D3D9 resources that won't live through a device reset (D3DPOOL_DEFAULT)
// or that are tied to the back buffer size
//--------------------------------------------------------------------------------------
HRESULT CALLBACK OnD3D9ResetDevice( IDirect3DDevice9* pd3dDevice, const D3DSURFACE_DESC* pBackBufferSurfaceDesc,
void* pUserContext )
V_RETURN(g_dlg_resource_manager.OnD3D9ResetDevice());
V_RETURN(g_settings_dlg.OnD3D9ResetDevice());
V_RETURN(g_font-&OnResetDevice());
V_RETURN(D3DXCreateSprite(pd3dDevice, &g_text_sprite));
//设置对话框位置和大小的代码如下所示:
// set dialog position and size
g_button_dlg.SetLocation(pBackBufferSurfaceDesc-&Width - 170, 0);
g_button_dlg.SetSize(170, 170);
g_control_dlg.SetLocation(pBackBufferSurfaceDesc-&Width - 170, pBackBufferSurfaceDesc-&Height - 350);
g_control_dlg.SetSize(170, 300);
// setup view matrix
D3DXMATRIX mat_
D3DXVECTOR3 eye(0.0f, 0.0f, -5.0f);
D3DXVECTOR3 at(0.0f, 0.0f, 0.0f);
D3DXVECTOR3 up(0.0f, 1.0f, 0.0f);
D3DXMatrixLookAtLH(&mat_view, &eye, &at, &up);
pd3dDevice-&SetTransform(D3DTS_VIEW, &mat_view);
// set projection matrix
D3DXMATRIX mat_
float aspect = (float)pBackBufferSurfaceDesc-&Width / pBackBufferSurfaceDesc-&H
D3DXMatrixPerspectiveFovLH(&mat_proj, D3DX_PI/4, aspect, 1.0f, 100.0f);
pd3dDevice-&SetTransform(D3DTS_PROJECTION, &mat_proj);
return S_OK;
//--------------------------------------------------------------------------------------
// Handle updates to the scene.
This is called regardless of which D3D API is used
//--------------------------------------------------------------------------------------
void CALLBACK OnFrameMove( double fTime, float fElapsedTime, void* pUserContext )
void RenderText()
CDXUTTextHelper text_helper(g_font, g_text_sprite, 20);
text_helper.Begin();
//show frame and device states
text_helper.SetInsertionPos(5, 5);
text_helper.SetForegroundColor(D3DXCOLOR(1.0f, 0.475f, 0.0f, 1.0f));
text_helper.DrawTextLine(DXUTGetFrameStats(true));
text_helper.DrawTextLine(DXUTGetDeviceStats());
// show other simple information
text_helper.SetForegroundColor( D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f));
text_helper.DrawTextLine(L&Put whatever misc status here&);
//show helper information
const D3DSURFACE_DESC* surface_desc = DXUTGetD3D9BackBufferSurfaceDesc();
if(g_show_help)
text_helper.SetInsertionPos(10, surface_desc-&Height - 15 * 6);
text_helper.SetForegroundColor( D3DXCOLOR(1.0f, 0.475f, 0.0f, 1.0f));
text_helper.DrawTextLine(L&Controls(F1 to hide):&);
text_helper.SetInsertionPos(40, surface_desc-&Height - 15 * 5);
text_helper.DrawTextLine(L&Quit: ESC&);
text_helper.SetInsertionPos(10, surface_desc-&Height - 15 * 4);
text_helper.SetForegroundColor( D3DXCOLOR(1.0f, 1.0f, 1.0f, 1.0f));
text_helper.DrawTextLine(L&Press F1 for help&);
text_helper.End();
//--------------------------------------------------------------------------------------
// Render the scene using the D3D9 device
//--------------------------------------------------------------------------------------
void CALLBACK OnD3D9FrameRender( IDirect3DDevice9* pd3dDevice, double fTime, float fElapsedTime, void* pUserContext )
/*知识点3:渲染控件
---------------------------------------------
来自&&DXUT框架剖析(14)&&
---------------------------------------------
在主程序的OnFrameRender()回调函数中,调用各个对话框的OnRender()函数对各个对话框进行渲染,代码如下:
if(g_settings_dlg.IsActive())
g_settings_dlg.OnRender(fElapsedTime);
// Clear the render target and the zbuffer
V( pd3dDevice-&Clear( 0, NULL, D3DCLEAR_TARGET | D3DCLEAR_ZBUFFER, D3DCOLOR_ARGB( 0, 45, 50, 170 ), 1.0f, 0 ) );
// Render the scene
if( SUCCEEDED( pd3dDevice-&BeginScene() ) )
RenderText();
V(g_button_dlg.OnRender(fElapsedTime));
V(g_control_dlg.OnRender(fElapsedTime));
V( pd3dDevice-&EndScene() );
//--------------------------------------------------------------------------------------
// Handle messages to the application
//--------------------------------------------------------------------------------------
LRESULT CALLBACK MsgProc( HWND hWnd, UINT uMsg, WPARAM wParam, LPARAM lParam,
bool* pbNoFurtherProcessing, void* pUserContext )
/*知识点4:处理控件消息
---------------------------------------------
来自&&DXUT框架剖析(14)&&
---------------------------------------------
当在应用程序的窗口中单击鼠标或触发其他事件时,先由对话框资源管理器对象g_dlg_resource_manager处理全局消息以更新GUI,然后进入各个对话框的
消息处理函数:
*pbNoFurtherProcessing = g_dlg_resource_manager.MsgProc(hWnd, uMsg, wParam, lParam);
if(*pbNoFurtherProcessing)
if(g_settings_dlg.IsActive())
g_settings_dlg.MsgProc(hWnd, uMsg, wParam, lParam);
*pbNoFurtherProcessing = g_button_dlg.MsgProc(hWnd, uMsg, wParam, lParam);
if(*pbNoFurtherProcessing)
return 0;;
*pbNoFurtherProcessing = g_control_dlg.MsgProc(hWnd, uMsg, wParam, lParam);
if(*pbNoFurtherProcessing)
/*知识点6:释放对话框
---------------------------------------------
来自&&DXUT框架剖析(14)&&
---------------------------------------------
在程序退出前需要释放各个对话框所占用的资源:
//--------------------------------------------------------------------------------------
// Release D3D9 resources created in the OnD3D9ResetDevice callback
//--------------------------------------------------------------------------------------
void CALLBACK OnD3D9LostDevice( void* pUserContext )
g_dlg_resource_manager.OnD3D9LostDevice();
g_settings_dlg.OnD3D9LostDevice();
g_font-&OnLostDevice();
release_com(g_text_sprite);
//--------------------------------------------------------------------------------------
// Release D3D9 resources created in the OnD3D9CreateDevice callback
//--------------------------------------------------------------------------------------
void CALLBACK OnD3D9DestroyDevice( void* pUserContext )
g_dlg_resource_manager.OnD3D9DestroyDevice();
g_settings_dlg.OnD3D9DestroyDevice();
release_com(g_font);
void CALLBACK OnKeyboardProc(UINT character, bool is_key_down, bool is_alt_down, void* user_context)
if(is_key_down)
switch(character)
case VK_F1:
g_show_help = !g_show_
//--------------------------------------------------------------------------------------
// Handle events for controls
//--------------------------------------------------------------------------------------
void CALLBACK OnGUIEvent(UINT event, int control_id, CDXUTControl* control, void* user_context)
/*知识点5:处理控件事件
---------------------------------------------
来自&&DXUT框架剖析(14)&&
---------------------------------------------
当触发控件事件后,会先处理控件消息,再处理控件事件
switch(control_id)
case IDC_TOGGLE_FULLSCREEN:
DXUTToggleFullScreen();
case IDC_TOGGLE_REF:
DXUTToggleREF();
case IDC_CHANGE_DEVICE:
g_settings_dlg.SetActive(true);
//--------------------------------------------------------------------------------------
// Initialize dialogs
//--------------------------------------------------------------------------------------
void InitDialogs()
g_settings_dlg.Init(&g_dlg_resource_manager);
g_button_dlg.Init(&g_dlg_resource_manager);
g_control_dlg.Init(&g_dlg_resource_manager);
/*知识点2:初始化控件对象
---------------------------------------------
来自&&DXUT框架剖析(14)&&
---------------------------------------------
在程序开始时,调用各个对话框的Init函数和对话框资源管理对象进行初始化:
需要注意的是,对话框类CD3DSettingsDlg是Direct3D封装好的一个专门用于Direct3D渲染设备设置的对话框类,其中的控件已经都加载好了,同时各个控件
将如何响应用户的输入Direct3D也已经实现了。在此只需对它的对象实例g_settings_dlg进行相应的初始化,并在程序退出前释放对应的资源即可。
g_button_dlg和g_control_dlg是两个标准的DXUT对话框,它们中没有任何控件,可以把它们看作两个装载控件的容器。其初始化包括三项内容:设置对话框
控件事件处理回调函数、添加控件、设置对话框位置和大小。
//设置对话框控件事件处理回调函数、添加控件的代码如下所示(注意:对话框位置和大小需要在OnD3D9ResetDevice函数里设置):
g_button_dlg.SetCallback(OnGUIEvent);
int x = 35, y = 10, width = 125, height = 22;
g_button_dlg.AddButton(IDC_TOGGLE_FULLSCREEN, L&Toggle full screen&, x, y, width, height);
g_button_dlg.AddButton(IDC_TOGGLE_REF, L&Toggle REF(F3)&, x, y += 24, width, height, VK_F3);
g_button_dlg.AddButton(IDC_CHANGE_DEVICE, L&Change device(F2)&, x, y += 24, width, height, VK_F2);
g_control_dlg.SetCallback(OnGUIEvent);
g_control_dlg.AddComboBox(IDC_COMBO, x, y += 24, width, height);
g_control_dlg.GetComboBox(IDC_COMBO)-&AddItem(L&Text1&, NULL);
g_control_dlg.GetComboBox(IDC_COMBO)-&AddItem(L&Text2&, NULL);
g_control_dlg.GetComboBox(IDC_COMBO)-&AddItem(L&Text3&, NULL);
g_control_dlg.GetComboBox(IDC_COMBO)-&AddItem(L&Text4&, NULL);
g_control_dlg.AddCheckBox(IDC_CHECK_BOX_1, L&CheckBox1&, x, y += 24, width, height);
g_control_dlg.AddCheckBox(IDC_CHECK_BOX_2, L&CheckBox2&, x, y += 24, width, height);
g_control_dlg.AddRadioButton(IDC_RADIO_1, IDC_RADIO_GROUP_1, L&Radio1G1&, x, y += 24, width, height);
g_control_dlg.AddRadioButton(IDC_RADIO_2, IDC_RADIO_GROUP_1, L&Radio2G1&, x, y += 24, width, height);
g_control_dlg.AddRadioButton(IDC_RADIO_3, IDC_RADIO_GROUP_1, L&Radio3G1&, x, y += 24, width, height);
g_control_dlg.GetRadioButton(IDC_RADIO_3)-&SetChecked(true);
g_control_dlg.AddButton(IDC_BUTTON_1, L&Button1&, x, y += 24, width, height);
g_control_dlg.AddButton(IDC_BUTTON_2, L&Button2&, x, y += 24, width, height);
g_control_dlg.AddRadioButton(IDC_RADIO_4, IDC_RADIO_GROUP_2, L&Radio1G2&, x, y += 24, width, height);
g_control_dlg.AddRadioButton(IDC_RADIO_5, IDC_RADIO_GROUP_2, L&Radio2G2&, x, y += 24, width, height);
g_control_dlg.GetRadioButton(IDC_RADIO_5)-&SetChecked(true);
g_control_dlg.AddSlider(IDC_SLIDER, 50, y += 24, 100, height);
g_control_dlg.GetSlider(IDC_SLIDER)-&SetRange(0, 100);
g_control_dlg.GetSlider(IDC_SLIDER)-&SetValue(50);
g_control_dlg.AddEditBox(IDC_EDIT, L&Test&, x, y += 24, width, 32);
//--------------------------------------------------------------------------------------
// Initialize everything and go into a render loop
//--------------------------------------------------------------------------------------
INT WINAPI wWinMain( HINSTANCE, HINSTANCE, LPWSTR, int )
// Enable run-time memory check for debug builds.
#if defined(DEBUG) | defined(_DEBUG)
_CrtSetDbgFlag( _CRTDBG_ALLOC_MEM_DF | _CRTDBG_LEAK_CHECK_DF );
// Set the callback functions
DXUTSetCallbackD3D9DeviceAcceptable( IsD3D9DeviceAcceptable );
DXUTSetCallbackD3D9DeviceCreated( OnD3D9CreateDevice );
DXUTSetCallbackD3D9DeviceReset( OnD3D9ResetDevice );
DXUTSetCallbackD3D9FrameRender( OnD3D9FrameRender );
DXUTSetCallbackD3D9DeviceLost( OnD3D9LostDevice );
DXUTSetCallbackD3D9DeviceDestroyed( OnD3D9DestroyDevice );
DXUTSetCallbackDeviceChanging( ModifyDeviceSettings );
DXUTSetCallbackMsgProc( MsgProc );
DXUTSetCallbackFrameMove( OnFrameMove );
// TODO: Perform any application-level initialization here
InitDialogs();
// Initialize DXUT and create the desired Win32 window and Direct3D device for the application
DXUTInit( true, true ); // Parse the command line and show msgboxes
DXUTSetHotkeyHandling( true, true, true );
// handle the default hotkeys
DXUTSetCursorSettings( true, true ); // Show the cursor and clip it when in full screen
DXUTCreateWindow( L&chap14_control_dx9& );
DXUTCreateDevice( true, 640, 480 );
// Start the render loop
DXUTMainLoop();
// TODO: Perform any application-level cleanup here
return DXUTGetExitCode();
运行结果如下:
右上角那三个按键就是我们定义的
CDXUTDialog g_button_
右下角的那些控件就是我们定义的
CDXUTDialog g_control_
点击Change& Device按钮或按F2
我们可以看到:
这个对话框就是DXUT为我们实现好了的
CD3DSettingsDlg g_settings_
好了,经过这三步,你基本上DXUT毕业了.最后我会给个例子演示他们的使用.
参考知识库
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
访问:242399次
积分:7995
积分:7995
排名:第2089名
原创:554篇
转载:90篇
评论:87条
(1)(27)(13)(16)(16)(6)(9)(11)(25)(29)(28)(5)(69)(50)(29)(39)(82)(10)(2)(5)(2)(2)(3)(6)(22)(7)(7)(34)(21)(3)(3)(5)(2)(4)(8)(14)(6)(16)(4)(3)(1)

我要回帖

更多关于 独立自主的例子 的文章

 

随机推荐