能力值:
( LV12,RANK:450 )
|
-
-
2 楼
你这样提问题,神仙都不能回到,这其实就是硬件问题,首先,你的显示卡必须支持你所想干的事,如果硬件本身都不支持,你软件写到天上去都没有任何用处(另外你的显示器也要用相应的能力)。如果你的显卡确实又这个功能,你应该分析厂家的驱动程序,这些程序通常都是不加密的,很容易反编译,在理解了厂家的驱动后,对厂家的驱动增加你所想要的功能,而不是你自己从新写一个驱动,那太困难,你必须熟悉每一个硬件参数和IO口的设置方法,你有厂家的全部的资料?如果你什么都有了,那写个驱动并非你想象的那样困难,只是需要熟悉一下专门的格式,熟悉一下底层函数的调用,一般这方面的资料比较少,而且许多都没有公开,这才是真正的困难,而不是驱动本身。
另外:我读不懂你的这句话:
“请问Windows是否提供API来控制驱动程序的属性?”
这样的问法有点问题,windows 提供了一系列的底层函数来和驱动程序通讯,但这只不过是简单的传递参数而已,具体某一参数做什么事完全是你在开发驱动时自己定义的(当然这个参数是有一定的生成要求,而且规定只能大于某一个数(其实可以完全不理这个要求)) Windows 的API 只不过负责将你设计的参数传递给你的驱动,至于你的参数是什么含义,你的驱动接受了某一个参数具体干什么。windows 并不关心(如果这个也管,世界就不会有那么多优秀的病毒了)。
|
能力值:
( LV2,RANK:10 )
|
-
-
3 楼
我也觉的这个挺难的
但是3ds max是通过什么方式实现的呢?它肯定得有个通用的方法,不管用什么硬件都可以关闭V-Sync。
我是想问有没有办法通过程序实现像3ds max那样的效果
|
能力值:
( LV12,RANK:450 )
|
-
-
4 楼
其实最简单的就是分析3d max 是怎样做的,用DEBUG跟踪一下,断点下对了,很容易早到相应的控制代码。
|
能力值:
( LV4,RANK:50 )
|
-
-
5 楼
我只知道如何改OpenGL刷新同步...
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
Debug 3ds max?
这个对我来说太难了!:(
|
能力值:
( LV4,RANK:50 )
|
-
-
7 楼
最初由 HackersWin 发布 Debug 3ds max? 这个对我来说太难了!:(
也许用OpenGL的方法也可以解决:
#pragma comment(lib,"opengl32.lib")
#include <windows.h>
#include <gl/gl.h>
void main()
{
typedef void (APIENTRY *WGLSWAPINTERVALEXT)(int);
WGLSWAPINTERVALEXT wglSwapIntervalEXT=(WGLSWAPINTERVALEXT)wglGetProcAddress("wglSwapIntervalEXT");
// 这个地方初始化OpenGL或Direct3D
if(wglSwapIntervalEXT) //注意并不是所有显卡都支持
wglSwapIntervalEXT(1); // 启动vsync
}
|
能力值:
( LV12,RANK:450 )
|
-
-
8 楼
楼上的厉害,支持,对 Opengl 我一窍不通,哈哈。
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
最初由 dwing 发布 也许用OpenGL的方法也可以解决: [CODE] #pragma comment(lib,"opengl32.lib") #include <windows.h> #include <gl/gl.h> ........
谢谢!
我试试!
|
|
|