问题标签 [vesa]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
c# - 是否可以检测连接到 Windows PC 的监视器是否正在主动显示某个输入?
我正在开发一个通过 VNC 支持远程显示的 Windows 应用程序。通常,远程显示器将是唯一的可视界面。但是,在某些情况下,用户会希望使用物理监视器查看应用程序。如果连接了物理连接的显示器并切换到特定输入(可能是 DVI 或 HDMI),我需要能够检测到并关闭 VNC。是否可以检测连接的监视器是否正在主动显示某个输入?
我知道我可以获取有关所连接显示器的一些信息,Screen.AllScreens
但其中没有任何内容似乎完全符合我的需要。Windows API 是否有一些方法可以为我提供这些信息?是否可以从 VESA/DDC 确定必要的信息?
assembly - VESA 不适用于 BOCHS
我编写了一个简单的引导加载程序,它设置视频模式并放置一些像素。我已经在 Virtual box、QEMU、Dosbox 和真实硬件上测试过它。对它们很有效,但对 Bochs 无效。模式设置正确,但未绘制像素。
有什么建议么?谢谢。
bios - 如何使用来自 GRUB 的实模式 BIOS / VESA 调用?
我正在开发一个简单的 Grub 模块,它可以在启动过程的早期阶段启用一些额外的视频设置/初始化。我实际最好的想法是使用一些 VESA 调用来完成任务。
不幸的是,最近我发现 Grub 无法进行实模式调用。
但是 GRUB 可以执行非常复杂的操作,如果没有 BIOS 的帮助,这可能是无法想象的。
这怎么可能?我怎么能从 grub 调用 bios?
c - 检测鼠标移动并在屏幕上显示的问题(环境:DOS+SVGA+turbo c)
我打算调用 BIOS 中断函数来检测鼠标的位置,我认为如果我恢复屏幕上显示的鼠标的原始区域然后在新位置“绘制”它,它会起作用。
但这是我的程序的结果:鼠标的图像将显示在屏幕上,图像将响应移动一次。然后程序将被卡住,直到我强行结束它。
我用dosbox模拟dos环境。我的开发环境是turbo c 3.0。我在vesa vbe下编程以支持svga模式(turbo c不完全支持)。代码:
我很确定绘制鼠标和隐藏它的功能是正确的,因为我已经测试过它。中断功能是失败的原因吗?希望得到您的答复,非常感谢。
assembly - 更改 VESA BasePtr 以在 x86_64 asm 中实现双缓冲?
我想通过为 VESA 视频内存实现更好的双缓冲来提高我的图形代码的性能。
背景:
我在x86_64 nasm中编写了一个简单的生命游戏实现。它在 QEMU 中启动,切换到 64 位并从一些伪随机初始状态运行游戏。
我正在使用内存缓冲区来存储“下一个”状态,并且在每个刻度结束时,我将整个缓冲区复制到视频内存位置,然后将其归零。在我目前的情况下,每次滴答都有几乎 2MiB 的数据交换/更改,这可能是不必要的。这种方法在 320x200x8bpp 中运行良好,但现在在 VESA 640x480x24bpp 中它太慢了。
我确信有更好的方法可以做到这一点,我的第一个想法是简单地交换缓冲区的内存地址。我寻找了一种方法来做到这一点,但在编程参数方面找不到任何东西。我可以获得 VESA 模式信息等,但是有没有办法设置一些值?
或者也许我做错了,有更好/其他的方法吗?
一些注意事项:
- 64 位长模式,没有可用的 BIOS 中断
- 我正在写入映射到 RAM 位置@VBEModeInfo.VidMemBasePtr 的连续视频内存
operating-system - 尝试在启用分页的情况下访问 VESA LFB 时出现页面错误
每当我尝试将像素写入 VESA 模式的 LFB 时,都会出现页面错误,该页面存在并已被读取。我的分页实现来自 James Molloy 的 OS 系列。我已经尝试如下身份映射LFB:
这些是这些功能的原型:
禁用分页后,我可以毫无问题地将像素写入 LFB。我的身份映射 LFB 是否不正确?我还需要做些什么来正确识别映射吗?有什么建议么?
assembly - 如何在实模式下制作 VESA 线性帧缓冲区以在保护模式下使用它?
我想创建一个小型操作系统,但在 32 位模式下,图形具有我屏幕的全分辨率 (1366x768) 和 24 bpp。现在,我在 nasm 汇编中的代码在实模式下调用 0x4F02 VESA 函数,其值为 0xC118(左起第二位为 1,以创建线性帧缓冲区)。之后,我进入32位保护模式,只能访问0xA0000中屏幕的前64Kb,所以还没有创建线性帧缓冲区。而且我无法切换银行,因为它处于保护模式。我在许多站点中进行了搜索,但没有找到任何方法来创建有效的线性帧缓冲区。
c# - 字符字体编码 C#
所以我在 C# 中使用 VESA,我正在尝试对字体进行编码。
我知道您必须使用 1 和 0 的数组并将它们转换为十六进制,但我不太确定如何创建数组,然后声明使用的像素,有人可以帮忙吗?
assembly - 在 PC 上切换到高分辨率文本模式
我想编写一个在文本屏幕上运行的文本编辑器。在现代 PC 中,1280x1024(160x64 字符)屏幕适用于平板。出于安全原因,我正在开发基于 i865 的 P4 主板。VESA BIOS 设置分辨率但在图形模式下;此外,VGA 寄存器显示原始 DOS 屏幕值。我需要帮助如何将 i865 编程为文本模式。
c++ - mingw (cross-dev) 中的 VESA / int86 函数
在有人告诉我 in86 和 VESA 是 dos 的东西之前,它不会在现代系统上工作。我知道,我正在开发一款适用于新旧系统的游戏。我的游戏可以在带有 SDL1 的 Windows 9x 上运行,但速度很慢(166Mhz,640x480@256 色,在简单的平铺绘图“引擎”中只有 25 帧)所以我想直接使用 VESA 模式。我知道如何使用它们,但我的问题是......是否有可能在 mingw 中获得 int86 和 int86x,所以我可以在我的 linux 机器上编译我的游戏并获得一个可以在 windows9x 上运行的 .exe。如果我使用旧的 MS 编译器,我的代码可以工作,但我必须在虚拟机中使用 Windows 才能做到这一点。我想在mingw中得到它。
这是一个例子。我以某种方式剪掉了它,但你应该明白这一点。