当前位置: 首页 > 知识库问答 >
问题:

处理:使用延迟功能时渲染停止

怀宇
2023-03-14

我为我的草图创建了一个简单的延迟函数,并试图使用它,但似乎渲染停止了,也就是说,有一个简单的灰色屏幕,然后一切都被一次渲染。

有人能告诉我我在哪里吗出错了?到底发生了什么?

如何在内部定义绘制()和设置()?我知道,set()是一个一次性的渲染和绘制(),就像一个无限的循环。

代码

void delay(int delay)
{
int time = millis();
while(millis() - time <= delay);
}

void setup(){
   size(600,400);
   smooth();     
 }

void draw(){
   background(0); //black
   delay(1000);
   fill(255); //white
   ellipse(width/2, height/2, 300, 300);
   delay(1000);
 }

共有2个答案

许庆
2023-03-14

如果需要延迟,请使用Thread()对象,如以下代码,在单独的线程中运行延迟:

void delay(int delay)
{
  try
  {
  Thread.sleep(delay);
  }
  catch(Exception EX)
  {
  }
}

void setup(){
   size(600,400);
   smooth();
   thread("sleepy"); // the function sleepy will be started in a new thread     
 }

void draw(){
 // draw() does nothing here except refresh the screen
 }
void sleepy()
{
  while(true)
  {
    background(0); //black
    delay(1000);
    fill(255); //white
    ellipse(width/2, height/2, 300, 300);
    delay(1000);
  }
}

另外,上面的延迟方法是线程。sleep()在运行时不会消耗整个CPU内核(millis()方法类似于临时无限循环)。在Processing 2.2.1和Windows 7 professional上进行了测试。

阚吕恭
2023-03-14

draw()和setup()是如何在内部定义的?我知道setup()是一次性渲染

问题是draw()只在每次执行结束时渲染一帧,所以停止它通常不是一个好主意。

http://wiki.processing.org/w/I_display_images_in_sequence_but_I_see_only_the_last_one._Why?

如果你想计时的话,可以用布尔值来表示事情应该发生的时间。

同时检查以下内容:

http://wiki.processing.org/w/What_are_setup()_和_draw()?

http://wiki.processing.org/w/How_do_I_display_a_message_for_a_few_seconds?

 类似资料:
  • 问题内容: 我有一个React组件,其中有许多子组件。我不希望立即渲染子组件,而是要经过一段时间的延迟(对于每个子组件而言,它们是统一的还是不同的)。 我想知道-有没有办法做到这一点? 问题答案: 我认为最直观的方法是给孩子一个“ wait” ,在从父代传递过来的持续时间内隐藏该组件。通过将默认状态设置为隐藏,React仍会立即渲染组件,但是直到状态更改后它才可见。然后,您可以设置为调用一个函数,

  • 问题内容: 我没有代码示例或任何内容,因为我不知道该怎么做,但是有人可以告诉我如何在一定时间内迅速延迟功能吗? 问题答案: 您可以使用GCD(在示例中,延迟10秒): 迅捷2 Swift 3和Swift 4

  • 到目前为止我们实现的延迟渲染效果还算不错,但是当你将相机靠近物体观察时会出现在上一课的结尾提到的问题。第一个问题就是由于背面剔除的存在,当相机进入到光源体之后这个光源的光照效果就会消失。第二个问题则与光源的范围有关,这是因为在将光源的包围球投影到屏幕坐标系之后,我们会对被这个球体覆盖的所有像素都进行光照计算,即使这个像素离光源很远(也就是位于光源体之外)。 OpenGL 中的模板缓存可以帮助我们解

  • 在前面的课程中我们学习了延迟渲染的基础部分,而且将几何阶段的结果输出到了 G-Buffer 中。如果你运行了演示程序你就知道 G-Buffer 里面的内容是什么了。今天我们将完成延迟渲染的基本实现,并且使得最后渲染出来的场景看起来和使用正向渲染的结果一样!在这一课的最后会有一个问题显现出来,这个问题将在下一课中解决。 现在 G-buffer 中已经存放和合适的数据,我们要借助于它们来进行光照计算。

  • 从第十七课起到目前为止,我们所做的光照计算都叫做前向渲染(着色),这是一个十分直接的方式,我们在 VS 中对所有对象的顶点进行一系列的变换(这些变换通常是将顶点法线和顶点位置变换到裁剪空间中),之后在 FS 中逐像素进行光照计算。由于每个像素都只调用 FS 一次,所以当我们逐像素的计算每个像素的光照效果时,我们需要将所有的光照信息都传递到 FS 中。这个方法十分简单但是却有一些缺陷,如果场景十分复

  • 正如标题所述,使用sampler2DShadow会导致我的多采样FBO的照明着色器出错,但我无法检测到该问题,因为使用标准延迟渲染设置(无多采样)的配置非常类似,这很好。 openlGL中的sampler2DShadow和多采样是否存在兼容性问题,或者我应该使用的一些替代方案? 着色器编译得很好。 在我运行这行代码之前,代码运行良好: 并检索结果。然后我得到GL_无效的_操作。 阴影贴图来自定向光