问题标签 [vga]

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.

0 投票
1 回答
2105 浏览

memory - VGA和集成图形理论

英特尔网站说,我并不是真的想知道 VGA 的来龙去脉,而是想知道它如何工作(以及集成显卡)的基本原理——

在此处输入图像描述

所以这个被盗的内存被用作 VGA 适配器的帧缓冲区,VGA 图形控制器的任何读/写操作都将来自那里?

具有 1MB 被盗 VGA 内存的示例系统 -

在此处输入图像描述

因此,如果上述系统在 VGA 模式下运行,并且某些内容被写入旧版 VGA 地址范围(0xA0000 - 0xbffff),那么该过程会是什么?

目前我的理解是内存控制器会将其从 CPU 转发到 VGA 适配器,然后使用图形转换表 (GTT) 将其转换为 DRAM 顶部的物理地址,介于 03F0_OOOOh - 03FF_FFFFh 之间?

这是否意味着由于 VGA 适配器正在使用 MMIO 的地址范围,因此无法在 DRAM 中访问旧版 VGA 内存范围 0xA0000 - 0xbffff?

如果有人可以帮助解决这些问题,将不胜感激,

谢谢。

0 投票
1 回答
5329 浏览

video - 组装 x86 视频模式

我正在尝试在装配(NASM)中创建一些基本的绘图例程。查看x86 BIOS 中断表,我发现提供一些视频处理服务的10h中断。

使用它,我设法想出了一个绘制正方形的例程,将中断调用配置为Write a Graphics Pixel (AH = 0Ch)

正方形被正确绘制但时间太长,我可以看到它被填充了。顺便说一句,我在 QEMU 上运行我的代码。

我假设屏幕的刷新速度比指令的执行速度快。经过一番研究,我没有找到任何有用的内容。主要可能的解决方案是调整垂直同步并直接写入视频内存。

考虑到我使用的是视频模式12h (640x480 - 16 色),我的问题是:

1 - 直接写入显存比调用中断更快?

2 - 如何在视频内存空间中组织字节?每个像素占用一个字节(从地址 0xa000 开始)?

3 - 如何写入显存?简单地按顺序写入每个像素颜色?

4 - 通常,当显示器刷新屏幕时,它只是不时直接从视频内存中读取?

0 投票
2 回答
536 浏览

assembly - 如何从 VGA 控制器内存中手动恢复系统字体?

我可以使用带有非常不寻常的 VGA 系统字体的东芝 386 PC (T2000Sx) ;我想将其恢复为网站中的字体文件和文档。

如何编写一个程序,从 VGA 内存中读取字体数据并将其写入软盘?

系统几乎不能从软盘启动,内存很小(1MB 基本 + 9MB 扩展),也没有硬盘驱动器。它曾经通过并行端口上的 ZIP 驱动器引导 Debian 2.1,但这似乎不再起作用。

问题是以下组合:

  1. 是否有(DOS)程序可以做到这一点?(我还没有找到;但也许有?)

  2. 编程工具:我可以使用哪种语言/编译器?显然这台机器不会运行任何现代操作系统,所以 GCC / VS 是不可能的。20 年前,我有一些从程序集中手动编写 .COM 可执行文件的经验,但它已经生锈了;现在有更好的编程工具吗?

  3. VGA标准:在地址空间的哪个地址可以找到字体数据,应该读取多少字节?我还没有在其他在线资源中找到这个。

0 投票
1 回答
362 浏览

arduino - 使用 Arduino、Gameduino 1.0 (VGA) 和 GLCD/TFT 显示器绘制静态线

我对此非常陌生,所以请耐心等待。我正在尝试使用 Arduino UNO 和 Gamduino 1.0 在 VGA 显示器上设计用户界面,并且需要帮助绘制两个轴(x 和 y)。本质上,我需要在显示器上绘制两条静态线,其中 x 轴在显示器上从左向右平移,y 轴距离显示器左侧 1/8,从顶部平移 1/2显示直到底部。

希望这是有道理的。

0 投票
1 回答
129 浏览

graphics - 以编程方式调整显示器颜色

我想创建一个简单的滑块,它将在硬件级别调整显示器中的一种颜色。我想这样做以将颜色调整为眼睛看到的确切方式。我知道探查器会完成大部分工作,但我担心另外 10% 的工作不太正确,可以手动调整。我不太确定整个显示器是如何工作的。有人可以指出我开始研究的方向吗?

到目前为止,我看到的障碍是让它在所有显卡上都工作相同和/或如果在后台运行另一个颜色配置器,则尝试对显示器进行双重配置。我希望能够编写一个可以在任何计算机上运行的程序。这甚至实用吗?

0 投票
0 回答
275 浏览

c++ - os dev : vga 打印字符串和奇怪的编译器行为

我正在尝试实现一个非常简单的函数来在我的内核中打印字符串。

这个麻烦对我来说似乎很奇怪,我在想我可能错过了一些重要的事情,但我不知道是什么。

所以,我有一个不起作用的代码:

请查看此摘录中的第 3 行: if (c=='\n') 如果我将其更改为无辜者会怎样: if (false) 那么它神奇地完美地工作......它不适用于 if(c =='T') 或其他任何东西,反正我的测试代码中还没有 '\n' :

我想知道是否出于某种模糊的原因,

部分正在制造麻烦,但如果我用分号更改它并没有更好的效果......

但这还不是全部。我正在使用这些标志进行编译:

如果我删除优化标志“-O2”,那么它在任何情况下都不会起作用。

我不明白我想念什么...请,你能帮帮我吗?我快疯了:P

=============编辑==============

经过调查,默认 qemu 设置似乎不支持 mtrrs(我使用特定的 cpu 设置检查了这一点)。在这里检查代码:(值得注意的是,osdev 说检查第 5 位,而 intel 说第 12 位,后者似乎在 qemu 下工作)

这是我当前的代码库。

这里的 asm 部分是设置 cr0 中的第 30 位,英特尔声称这是禁用缓存。这仍然会打印第一个字母,而打印较短的字符串则很好......

我不知道现在要搜索什么。你有什么主意吗 ?十分感谢

=============编辑==============

哇,刚刚发现了一个不错的bug...

解决方案在链接描述文件中:

变成:

只是因为 clang 生成的不是.rodata部分,而是.rodata.str1.1部分。这导致缺少rodata字符串,除非它短到4个字符,在这种情况下,它会被表示为一个int ...与-O2。

0 投票
2 回答
952 浏览

text - Matrox 图形适配器使用的经典 VGA 文本控制台字体

早在 199[456] 时,我正在使用 Linux 和 Matrox 图形适配器。对于编程,我经常使用文本模式,并没有费心启动 X11。这些显卡允许非常高的文本分辨率,并且仍然具有非常易读的字体。有时我想测试一下这种字体是否适合在 X11 上进行编程——但我找不到这种字体来试一试!

我进行了深入的搜索,例如这里,但似乎没有一种字体看起来像 Matrox 字体。所以,问题:

  • 使用了哪种字体?是在那些显卡上看起来更好的常规控制台字体吗?
  • 这个字体可用于 X11 吗?哪一个?
  • 有没有例子/截图?

如果有人能解释我只是产生幻觉还是我的记忆是准确的,我会非常高兴。

更新:我已经找到了一个很好的资源。选择字体Px437_IBM_VGA_8x16.ttf并将终端设置为 12px 非常接近我的记忆。由于现在显示器的分辨率要高得多,字体变得非常小,放大它看起来有点不对劲。我将不得不进行实验。

0 投票
1 回答
333 浏览

verilog - 查询: VGA Controller (Verilog) Basys 2 board 中使用的时钟分频器错误

在我的 VGA 控制器(Basys 2 板)中加入时钟分频器(40 MHz)时出现错误。我的编码错误是 - 输入缓冲区 instance_name/CLKIN_IBUFG_INST 的端口 I 连接到 GND。请帮助消除此错误!

代码如下:

0 投票
2 回答
13313 浏览

vhdl - 带有 VHDL 的 VGA 控制器

我正在尝试通过一些书籍和 Terasic 的 Altera DE1 开发套件来学习 VHDL 编程。

这里的问题是我正在尝试对 VGA 控制器进行编程,使其能够以 640x480 的分辨率工作(尽管我的屏幕是 1280x1024 的 TFT LCD)。

我的代码有一些问题。

我正在使用 FSM 来制作垂直和水平信号,另一个块来驱动 RGB 输入以及来自 DE1 的 27 MHz 时钟。

我认为代码一定有问题,因为我在屏幕上打印的图像尺寸不正确(640x480)而是更大(大约1174x980)。

到现在为止,我正试图在屏幕上只放一种颜色来简化它,直到我发现错误为止。

我的项目有 3 个文件,1 个用于块 RGB,1 个用于 FSM,另一个用于实例化它们。

我将不胜感激解决此问题的某种帮助,因为我已经努力解决了这个问题,但我看不出错误在哪里。

非常感谢!

奥马尔

VGA 控制器文件

FSM 同步文件

VGD 显示文件

0 投票
2 回答
978 浏览

c++ - 我可以强制监视器使用批处理/C++ 切换输入吗

我有 2 个显卡(一个集成的 Intel 卡和一个 NVIDIA 卡),它们都连接到一个显示器(VGA / HDMI)。

以某种方式说它们都有不同的输出(我有一个 Windows 7 和一个 VM,每个都使用一张卡)。

是否有任何命令/API 可以发送到显示器,以便它可以自动将其输入从 VGA 切换到 HDMI 或其他方式?