热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

c++sfml数组[5]的for循环window.display中的字符串,只显示1,3,5行

如何解决《c++sfml数组[5]的for循环window.display中的字符串,只显示1,3,5行》经验,为你挑选了1个好方法。

如果我无法正确解释自己,你将不得不原谅我,我正在尝试使用c ++ sfml字符串数组创建一个高分表.我试着用它们分别绘制它们window.draw(array[1],array[2]等等.

但是如果我将数组放在for循环中并使用int变量,它只会绘制数组1,3和5.

for(cnt = 0;cnt <5;cnt++)
    {
        thiswindow.draw(topscores[cnt]);
        thiswindow.draw(topnames[cnt]);
        thiswindow.display();
    }

Conduit.. 7

如Rosme所述,RenderWindow::display不应在循环内调用.实际上,RenderWindow::display每帧渲染内容只应调用一次... SFML使用双缓冲,并且RenderWindow::display是切换后缓冲区的命令.我们花点时间讨论一下这是如何工作的:

当您在双缓冲系统中绘制内容时,实际上绘制到两个单独的表面("缓冲区") - 在任何给定时间,一个被隐藏(发生绘图的缓冲区),并且一个显示在屏幕上.当前用于绘图的隐藏缓冲区称为"后台缓冲区".当RenderWindow::display调用(或其在其他双缓冲系统中的等效物)时,屏幕上当前显示的缓冲区将成为新的后台缓冲区,并且屏幕上会显示旧的后台缓冲区.这使您可以进行大量更改,同时降低弹出,撕裂或闪烁的风险 - 您永远不会绘制到正在显示的缓冲区.

有了这些知识,您应该了解循环中显示调用的结果:

instruction  |  back buffer  |  front buffer (shown)
----------------------------------------------------
             |  (empty)      |  (empty)
draw A       |  A            |  (empty)
display      |  (empty)      |  A
draw B       |  B            |  A
display      |  A            |  B
draw C       |  A, C         |  B
display      |  B            |  A, C
draw D       |  B, D         |  A, C
display      |  A, C         |  B, D
draw E       |  A, C, E      |  B, D
display      |  B, D         |  A, C, E

因此,在循环完成后,您将看到绘制的第一个,第三个和第五个项目.其他的也被绘制,但存在于后台缓冲区中,在那里它们无法看到.



1> Conduit..:

如Rosme所述,RenderWindow::display不应在循环内调用.实际上,RenderWindow::display每帧渲染内容只应调用一次... SFML使用双缓冲,并且RenderWindow::display是切换后缓冲区的命令.我们花点时间讨论一下这是如何工作的:

当您在双缓冲系统中绘制内容时,实际上绘制到两个单独的表面("缓冲区") - 在任何给定时间,一个被隐藏(发生绘图的缓冲区),并且一个显示在屏幕上.当前用于绘图的隐藏缓冲区称为"后台缓冲区".当RenderWindow::display调用(或其在其他双缓冲系统中的等效物)时,屏幕上当前显示的缓冲区将成为新的后台缓冲区,并且屏幕上会显示旧的后台缓冲区.这使您可以进行大量更改,同时降低弹出,撕裂或闪烁的风险 - 您永远不会绘制到正在显示的缓冲区.

有了这些知识,您应该了解循环中显示调用的结果:

instruction  |  back buffer  |  front buffer (shown)
----------------------------------------------------
             |  (empty)      |  (empty)
draw A       |  A            |  (empty)
display      |  (empty)      |  A
draw B       |  B            |  A
display      |  A            |  B
draw C       |  A, C         |  B
display      |  B            |  A, C
draw D       |  B, D         |  A, C
display      |  A, C         |  B, D
draw E       |  A, C, E      |  B, D
display      |  B, D         |  A, C, E

因此,在循环完成后,您将看到绘制的第一个,第三个和第五个项目.其他的也被绘制,但存在于后台缓冲区中,在那里它们无法看到.


推荐阅读
  • LeetCode笔记:剑指Offer 41. 数据流中的中位数(Java、堆、优先队列、知识点)
    本文介绍了LeetCode剑指Offer 41题的解题思路和代码实现,主要涉及了Java中的优先队列和堆排序的知识点。优先队列是Queue接口的实现,可以对其中的元素进行排序,采用小顶堆的方式进行排序。本文还介绍了Java中queue的offer、poll、add、remove、element、peek等方法的区别和用法。 ... [详细]
  • 先看官方文档TheJavaTutorialshavebeenwrittenforJDK8.Examplesandpracticesdescribedinthispagedontta ... [详细]
  • JDK源码学习之HashTable(附带面试题)的学习笔记
    本文介绍了JDK源码学习之HashTable(附带面试题)的学习笔记,包括HashTable的定义、数据类型、与HashMap的关系和区别。文章提供了干货,并附带了其他相关主题的学习笔记。 ... [详细]
  • 海马s5近光灯能否直接更换为H7?
    本文主要介绍了海马s5车型的近光灯是否可以直接更换为H7灯泡,并提供了完整的教程下载地址。此外,还详细讲解了DSP功能函数中的数据拷贝、数据填充和浮点数转换为定点数的相关内容。 ... [详细]
  • 本文介绍了Swing组件的用法,重点讲解了图标接口的定义和创建方法。图标接口用来将图标与各种组件相关联,可以是简单的绘画或使用磁盘上的GIF格式图像。文章详细介绍了图标接口的属性和绘制方法,并给出了一个菱形图标的实现示例。该示例可以配置图标的尺寸、颜色和填充状态。 ... [详细]
  • 深入解析Linux下的I/O多路转接epoll技术
    本文深入解析了Linux下的I/O多路转接epoll技术,介绍了select和poll函数的问题,以及epoll函数的设计和优点。同时讲解了epoll函数的使用方法,包括epoll_create和epoll_ctl两个系统调用。 ... [详细]
  • 流数据流和IO流的使用及应用
    本文介绍了流数据流和IO流的基本概念和用法,包括输入流、输出流、字节流、字符流、缓冲区等。同时还介绍了异常处理和常用的流类,如FileReader、FileWriter、FileInputStream、FileOutputStream、OutputStreamWriter、InputStreamReader、BufferedReader、BufferedWriter等。此外,还介绍了系统流和标准流的使用。 ... [详细]
  • 本文介绍了利用ARMA模型对平稳非白噪声序列进行建模的步骤及代码实现。首先对观察值序列进行样本自相关系数和样本偏自相关系数的计算,然后根据这些系数的性质选择适当的ARMA模型进行拟合,并估计模型中的位置参数。接着进行模型的有效性检验,如果不通过则重新选择模型再拟合,如果通过则进行模型优化。最后利用拟合模型预测序列的未来走势。文章还介绍了绘制时序图、平稳性检验、白噪声检验、确定ARMA阶数和预测未来走势的代码实现。 ... [详细]
  • Java太阳系小游戏分析和源码详解
    本文介绍了一个基于Java的太阳系小游戏的分析和源码详解。通过对面向对象的知识的学习和实践,作者实现了太阳系各行星绕太阳转的效果。文章详细介绍了游戏的设计思路和源码结构,包括工具类、常量、图片加载、面板等。通过这个小游戏的制作,读者可以巩固和应用所学的知识,如类的继承、方法的重载与重写、多态和封装等。 ... [详细]
  • 本文介绍了C++中省略号类型和参数个数不确定函数参数的使用方法,并提供了一个范例。通过宏定义的方式,可以方便地处理不定参数的情况。文章中给出了具体的代码实现,并对代码进行了解释和说明。这对于需要处理不定参数的情况的程序员来说,是一个很有用的参考资料。 ... [详细]
  • 基于Socket的多个客户端之间的聊天功能实现方法
    本文介绍了基于Socket的多个客户端之间实现聊天功能的方法,包括服务器端的实现和客户端的实现。服务器端通过每个用户的输出流向特定用户发送消息,而客户端通过输入流接收消息。同时,还介绍了相关的实体类和Socket的基本概念。 ... [详细]
  • 学习笔记17:Opencv处理调整图片亮度和对比度
    一、理论基础在数学中我们学过线性理论,在图像亮度和对比度调节中同样适用,看下面这个公式:在图像像素中其中:参数f(x)表示源图像像素。参数g(x)表示输出图像像素。 ... [详细]
  • python+selenium十:基于原生selenium的二次封装fromseleniumimportwebdriverfromselenium.webdriv ... [详细]
  • 第一步:PyQt4Designer设计程序界面该部分设计类同VisvalStudio内的设计,改下各部件的objectName!设计 ... [详细]
  • C++ OpenCV实战之标记点检测的实现
    C++ OpenCV实战之标记点检测的实现-在实际应用中,能够直接利用霍夫圆检测这些理想方法的应用场景是非常少的,更多的是利用拟合的办法去寻找圆形。大致思路如下,首先先选择要处理的 ... [详细]
author-avatar
储兰兰快乐
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有