我正在尝试在网络模拟工具中可视化网络负载。我想在一个窗口(例如一个4x4网状网络)中将网络节点显示为正方形网格,我可以根据节点上的流量单独选择每个方块的填充颜色(必须从中读取流量信息)转储文件,但以后的那个)。我试图看看我是否可以使用pyglet。因此,举例来说,假设我们有一个2x2网络(4个方格)。我想要一个2x2的正方形矩阵,我可以单独更改每个元素的填充颜色。我是初学者,到目前为止,我已经学会了在查看了很多参考资料之后绘制了一个填充的正方形。见代码:
import sys, time, math, os, random
from pyglet.gl import *
window = pyglet.window.Window()
label = pyglet.text.Label('Simulation',
font_name='Times New Roman',
font_size=16,
color=(204,204,0,255), #red font (255,0,0) opacity=255
x=window.width, y=window.height,
anchor_x='right', anchor_y='top')
class FilledSquare:
def __init__(self, width, height, xpos, ypos):
self.xpos = xpos
self.ypos = ypos
self.angle = 0
self.size = 1
x = width/2.0
y = height/2.0
self.vlist = pyglet.graphics.vertex_list(4, ('v2f', [-x,-y, x,-y, -x,y, x,y]), ('t2f', [0,0, 1,0, 0,1, 1,1]), ('c3B',(0,255,0,0,255,0,0,255,0,0,255,0)))
def draw(self,w,h,x,y):
self.width=w
self.height=h
self.xpos=x
self.ypos=y
glPushMatrix()
glTranslatef(self.xpos, self.ypos, 0)
self.vlist.draw(GL_TRIANGLE_STRIP)
glPopMatrix()
@window.event
def on_draw():
window.clear()
glClearColor(0, 0.3, 0.5, 0)
glClear(GL_COLOR_BUFFER_BIT)
label.draw()
square1.draw(60,60,460,240)
square1 = FilledSquare(30, 30, 100, 200)
pyglet.app.run()
让我知道是否有可能。
答案 0 :(得分:0)
我在pyglet-users google小组中得到了Adam的一些建议。他们在这里:
当你正在使用立即模式时,你也可以不将顶点颜色作为顶点列表的一部分传递,但是在绘制之前使用glColor *来设置颜色,例如
glColor3f(0.0,1.0,0.0)
您可以将对象放入列表中,以便
square = [[FilledSquare(...),FilledSquare(...)],[FilledSquare(...),FilledSquare(...)]]
感谢Adam(如果你看到这个),它真的有帮助。