我试图创建一个图像网格(以一种将平铺背景的方式)。以下是我一直在使用的:
PImage bgtile;
PGraphics bg;
int tilesize = 50;
void setup() {
int t = millis();
fullScreen(P2D);
background(0);
bgtile = loadImage("bgtile.png");
int bgw = ceil( ((float) width) / tilesize) + 1;
int bgh = ceil( ((float) height) / tilesize) + 1;
bg = createGraphics(bgw*tilesize,bgh*tilesize);
bg.beginDraw();
for(int i = 0; i < bgw; i++){
for(int j = 0; j < bgh; j++){
bg.image(bgtile, i*tilesize, j*tilesize, tilesize, tilesize);
}
}
bg.endDraw();
print(millis() - t);
}
计时代码说这需要大约四分之一秒,但根据我的计算,一旦窗口打开,屏幕上就会出现任何东西(这应该在第一次运行draw时发生)。有没有更快的方法可以得到同样的效果?(我想避免在绘制循环中呈现bgtile
数百次,原因显而易见)
一种方法是利用GPU,让OpenGL为您重复一个纹理。处理使得通过texturewrap(repeat)
重复纹理变得相当容易
不绘制图像,您可以创建自己的四方形状,例如,不调用顶点(x,y)
,而是调用顶点(x,y,u,v);
传递纹理坐标(上面OpenGL链接中的更多低级信息)。简单的想法是x,y将控制屏幕上的几何图形,u,v将控制纹理如何应用于几何图形。
您可以控制的另一件事是texturemode()
,它允许您控制如何指定纹理坐标(U,V):
PImage img;
void setup() {
fullScreen(P2D);
noStroke();
img = loadImage("https://processing.org/examples/moonwalk.jpg");
// texture mode can be IMAGE (pixel dimensions) or NORMAL (0.0 to 1.0)
// normal means 1.0 is full width (for U) or height (for V) without having to know the image resolution
textureMode(NORMAL);
// this is what will make handle tiling for you
textureWrap(REPEAT);
}
void draw() {
// drag mouse on X axis to change tiling
int tileRepeats = (int)map(constrain(mouseX,0,width), 0, width, 1, 100);
// draw a textured quad
beginShape(QUAD);
// set the texture
texture(img);
// x , y , U , V
vertex(0 , 0 , 0 , 0);
vertex(width, 0 , tileRepeats, 0);
vertex(width, height, tileRepeats, tileRepeats);
vertex(0 , height, 0 , tileRepeats);
endShape();
text((int)frameRate+"fps",15,15);
}
0.1-0.2:********** 0.2-0.3:******** 0.3-0.4:********* 0.5-0.6:********* 0.6-0.7:********* 0.7-0.8:********* 0.4-0.5:********* 0.5-0.6:********* 0.6-0.7:********* 0.1-0.2:********* 0.2-0.3:********* 0.
问题内容: 我知道如果我使用Java的Random生成器,并使用nextInt生成数字,则数字将均匀分布。但是,如果我使用2个Random实例,并使用两个Random类生成数字,会发生什么。数字是否会均匀分布? 问题答案: 每个实例生成的数字将均匀分布,因此,如果将两个实例生成的随机数序列组合在一起,则它们也应均匀分布。 请注意,即使结果分布是均匀的,您也可能要注意种子,以避免两个生成器的输出之间
所以我有两个项目,彼此分离,使用单独的terraform状态文件来管理自己。 项目A:专有网络、网络、子网、eip、gw层。此项目是我工作组中所有项目的共享专有网络。我们在同一专有网络内启动所有项目 项目B:应用程序、负载均衡器、安全组、ecs容器、api网关。这个项目就是应用程序本身,您可以相应地配置负载均衡器,使用允许任何端口的安全组,并在ecs上运行软件。 问题是:当我想更改VPC配置中的一
我们在AWS上运行16个节点kafka集群,每个节点是m4. xLargeEC2实例,具有2TB EBS(ST1)磁盘。Kafka版本0.10.1.0,目前我们有大约100个主题。一些繁忙的话题每天会有大约20亿个事件,一些低量的话题每天只有数千个。 我们的大多数主题在生成消息时使用UUID作为分区键,因此分区分布相当均匀。 我们有相当多的消费者使用消费群体从这个集群消费。每个使用者都有一个唯一的
在对OpenStack网络进行操作前,请先设置如下环境变量: export OS_USERNAME=admin export OS_PASSWORD=password export OS_TENANT_NAME=admin export OS_AUTH_URL=http://localhost:5000/v2.0 创建网络 列出neutron工具的扩展功能: $ neutron ext-
OpenStack网络服务是一个在OpenStack云内即可使用的、可扩展的管理网络的工具。这个工具能够帮助用户快速响应网络变更的需求(例如创建和分配新的IP地址等)。 OpenStack中的网络很复杂。本章仅简单介绍了如何创建网络和路由。欲了解详细的OpenStack网络管理内容,请参阅OpenStack Cloud Administrator Guide。 创建网络 登录控制台。 在Proje