这个主题不时出现在SO上,但通常是因为写得不好的问题而被删除.我看到很多这样的问题,然后在请求附加信息时从OP(通常的低代表)中沉默.如果输入对我来说足够好,我决定回答一个问题,它通常会在活动时每天获得一些投票,但几周之后问题就会被删除/删除,并且所有问题都从一开始就开始.所以我决定写这个Q&A所以我可以直接引用这些问题,而不会一遍又一遍地重写答案......
另一个原因也是这个META线程针对我,所以如果你有额外的输入随意评论.
如何使用C++将位图图像转换为ASCII艺术?
一些限制:
这是一个相关的Wiki页面ASCII艺术(感谢@RogerRowland)
当您将一个字节(例如(0x31)存储到物理线性地址的VGA 文本(模式 03)帧缓冲区中时),在以 16 位传统 BIOS MBR 模式启动的现代 PC 硬件上究竟发生了什么? 将该地区的MTRR设置为 UC的商店有多慢? (在一台 Kaby Lake iGPU 笔记本电脑上的实验测试表明,WC 上的 clflushopt 与 VGA 内存的 UC 速度大致相同。但没有 clflushopt,存储到 WC 内存永远不会离开 CPU 并且根本不更新屏幕,运行速度超快.)'1'B8000mov [es:di], eaxmov
如果它不是每个商店的 SMI,是否有任何方法可以在用户空间中的一块 WB 内存上估算此成本,以进行性能实验而无需实际重新启动到实模式?(例如,使用 BSS 页面作为实际上并不在任何地方显示的假装帧缓冲区)。
相应的字体字形在下一次刷新时出现在屏幕上,但硬件扫描是否真的从 VRAM(或 iGPU 的 DRAM)读取该 ASCII 字符并动态映射到位图字体字形?或者每个存储或每个 vblank 都有一些软件拦截,所以真正的硬件只需要处理位图帧缓冲区?
众所周知,传统 BIOS 引导使用系统管理模式 (SMM)将 USB kbd/鼠标模拟为 PS/2 设备。我想知道它是否也用于 VGA 文本模式帧缓冲区。我认为它是用于VGA的I …
我有一个被调用的变量,average在我的 中DATASEG,它每次都会改变,因为用户每次输入不同的输入。我想要做的是转到图形模式(VGA),然后在那里打印您的平均值是:然后平均值我知道如何更改为这样的图形模式:
mov ax, 13h
int 10h
Run Code Online (Sandbox Code Playgroud)
打印平均值后,如果平均值高于 75,我想打印在下面你是个好学生,继续努力,如果不是。别担心,你会好起来的!提前致谢。
我有一个java项目谁制作了"windows'迷宫"并使用光线投射算法.这是一个截图:
就像你可以看到所有的墙都有相同的高度.我想做同样的事,但身高不同
private void castRay(int xOnScreen,double angle,double direction) {
R rx = castRayInX(angle,direction);
R ry = castRayInY(angle,direction);
// In case of out-of-space rays
if (rx.getDistance()==Double.MAX_VALUE && ry.getDistance()==Double.MAX_VALUE) {
graphics.setColor(BACKGROUND);
graphics.drawLine(xOnScreen,0,xOnScreen,this.image.getHeight());
return;
}
double distance = rx.getDistance();
double normal = rx.getNormal();
Color c = rx.getColor();
double coef = Math.cos((angle+direction+Math.PI)-normal);
Plot collision = rx.getPlot();
if (ry.getDistance()<rx.getDistance()) {
distance = ry.getDistance();
normal = ry.getNormal();
c = ry.getColor();
coef = Math.cos((angle+direction+Math.PI)-normal);
collision = ry.getPlot();
}
coef = Math.abs(coef);
int factor = map.length*SQUARE_SIZE;
double d …Run Code Online (Sandbox Code Playgroud) 我想知道在屏幕上移动对象的最佳方法是什么,例如:如果某种形状出现在屏幕上(在图形模式下),我想使用键盘的箭头键左右移动它。我知道如何读取键盘缓冲区。重要的是我想知道如何在屏幕上平滑移动内容。
我正在使用具有8086体系结构的DOS-Box。并且移动必须处于图形模式(320X200)。
我想手动绘制图形,这意味着没有使用任何库或框架工作,如QT,directX,whindow.h ....就像命令屏幕上的每个像素在不同的时间显示一些特定的颜色.每个人都根据这些库或其他任何内容提供教程.我想要的是制作我自己的GUI.据我所知,这将是非常复杂,难以学习和理解,混乱和耗费大量时间,但我已经准备好了.我需要一些资源来理解这一点.
是的,我知道C++所以如果我不得不使用这种语言会更好,但如果需要我会学习其他语言,只是我想知道我应该学习哪种语言.