草庐IT

Graphics

全部标签

c++ - Direct3D 11 缺少 GetRasterStatus,如何检测垂直空白期?

我正在更新一个应用程序,在该应用程序中,屏幕上刺激呈现时间的测量需要最大的准确性。目前是用DirectDraw写的,很久以前就放牧了,需要更新我们的图形库。我们测量显示时间的方法是利用检测垂直空白期的结束。具体来说,我需要尽可能准确地知道翻转到主表面(或出现在交换链中)的任何内容何时真正被屏幕绘制。检测扫描线可以增加该测量的确定性,但我只能检测调用Flip或Present后垂直空白期何时结束。Direct3D9具有IDirect3DDevice9::GetRasterStatusMethod返回一个D3DRASTER_STATUS结构,其中包含一个InVBlankbool值,描述设备是

c++ - 避免调用 floor()

我正在编写一段代码,我需要处理不一定在0到1范围内的uvs(2D纹理坐标)。例如,有时我会得到一个u分量为1.2的uv。为了处理这个问题,我正在实现一个包装,它通过执行以下操作导致平铺:u-=floor(u)v-=floor(v)这样做会使1.2变为0.2,这是期望的结果。它还处理负面情况,例如-0.4变为0.6。但是,这些对floor的调用相当慢。我已经使用IntelVTune分析了我的应用程序,我花费了大量的周期来完成这个底层操作。在对这个问题做了一些背景阅读后,我想出了以下函数,它速度更快但仍有很多不足之处(我仍然会受到类型转换的惩罚,等等)。intinlinefasterflo

c++ - 如何拦截透明窗口的鼠标事件?

我有一个透明窗口(使用WS_EX_LAYERED创建),我想接收零阿尔法区域的鼠标事件。据我所知,我可以:1)使用鼠标Hook2)用几乎完全透明的颜色绘制背景(不透明度为1)但是,第一个解决方案很耗时,第二个解决方案会减慢我的渲染时间,因为我的窗口几乎在整个桌面上都被拉伸(stretch)了,而且此时大部分像素都是完全透明的。是否有其他方式接收这些鼠标事件? 最佳答案 根据MSDN:Hittestingofalayeredwindowisbasedontheshapeandtransparencyofthewindow.Thisme

windows - 如何扭曲桌面屏幕

我想改变桌面屏幕的形状,让桌面上显示的内容同时变形。而用户仍然可以在变形的桌面上用鼠标操作PC(运行应用程序,打开“我的电脑”等)。我想我必须首先得到屏幕坐标的投影矩阵。然后变换矩阵,将桌面缓冲图像映射到扭曲的网格上。在OpenGL或DirectX中有没有可以修改桌面屏幕形状的接口(interface)?你能给我一些提示吗?非常感谢你提前。请引用图片自http://oi53.tinypic.com/bhewdx.jpgBR,海峰加法1:对不起!可能我没有表达清楚我要实现什么。我要实现的是修改屏幕的形状。所以我们可以扭曲同时在Windows上运行的所有应用程序的形状。例如“我的电脑”的窗

c# - 如何获取 PictureBox 中 ImageRectangle 的尺寸?

背景我希望能够获得图片框内缩放图像的绘制尺寸(我将在下面解释)。PictureBox.ImageRectangle属性似乎正是我要找的,因为它显示了调整后图像的高度和宽度,以及它在控件内的相对顶部、左侧位置。问题是PictureBox.ImageRectangle是私有(private)的,所以我无法在不使用反射的情况下读取值(这显然不理想)。实际问题我的问题是,是否有另一种方法可以让我轻松获得这些值,而无需编写方法来计算“应该”的值是多少?我可以很容易地做到这一点,但我觉得我会重新发明轮子。上下文:我正在用C#编写一个简单的图像处理应用程序,它必须做的一件事是允许用户围绕图像的一部分

windows - 获取图形或显存的API

我想获取适配器RAM或图形RAM,您可以使用API在显示设置或设备管理器中看到它们。我在C++应用程序中。我试过在网上搜索,根据我的RnD,我得出的结论是我们可以从1.DirectXSDK结构称为DXGI_ADAPTER_DESC。但是,如果我不想使用DirectXAPI怎么办。2.Win32_videocontroller:但是如果视频Controller的可用性处于离线状态,此类并不总是为您提供adapterRAM信息。我在vista上查过了。有没有其他方法获取图形RAM? 最佳答案 没有办法在Windows上直接获取图形RAM

c++ - 如何准备一个恒定的基准环境

当我进行图形基准性能测试(C++)时,我发现应用程序有时会快一点或慢一点。这与当前操作系统状态/缓存/内存使用情况以及图形硬件状态有关。我使用的是Win7。我想知道是否有一些指南可以告诉我如何为基准性能测试获得稳定/恒定的环境? 最佳答案 有很多方法可以做到这一点-我倾向于为我的测试做的是使用WAIK(Windows自动安装工具包,可从Microsoft免费获得)在单独的工作站上部署最小的Windows7系统。然后,需要考虑/更改以下配置项(尽量不要偏离典型的用户机器太多,否则您的基准测试将不具有建设性):将分页文件设置为静态2xR

windows - 显示模式更改期间会发生什么?

普通计算机的显示模式(分辨率、深度)发生变化时会发生什么?(经典文具和笔记本电脑)这可能不是那么微不足道,因为视频卡是如此不同,但所有这些卡都有一个共同点:屏幕变黑(可以理解,因为信号已关闭)信号以新模式返回需要很多秒如果它在D3D或GL下:图形设备丢失,必须重新加载所有VRAM对象,使模式更改时间更长有人能解释一下这背后的本质吗,特别是为什么显示模式的改变不是后台缓冲区的微不足道的重新分配,而且需要这么“长”的时间? 最佳答案 唯一真正改变的是所谓的RAMDAC(直接连接到视频RAM的数字模拟转换器)的设置,今天有了数字连接,它更

c - 如何在 C 中进行 GUI 编程?

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。我想在C中进行图形编程。我已经搜索了很多有关编译器的信息,该编译器提供了一组丰富的函数来在C中进行GUI编程,但我找不到任何东西。基本上我想绘制按钮然后接受用户的选择并采取适当的行动。如果您能推荐一个C编译器或一个我可以添加到我的编译器中的库,那将很有帮助。我在Windows操作系统上工作。目前,我正在使用不支持直接方法创建按钮的TURBOC编译器。任何

DEV C++:手把手带你配置graphics.h(以DEV C++ 5.11为例)

第一步:下载ege包,百度搜索“ege官网”,如图,点开这一个。 第二步:下载ege。点击这个选项:第三步:解压缩后,看到以下文件:打开include目录,里面的文件全部复制到下图目录:再把.\ege20.08_all\EGE20.08\lib\devcpp中两个A文件复制到如下两个目录:最后配置:打开“编译选项”,看到如图界面:把-static-libgcc删掉,64-bit的全都加入-lgraphics64-luuid-lmsimg32-lgdi32-limm32-lole32-loleaut32-lwinmm-lgdiplus 32-bit的全都加入-lgraphics-luuid-lm