我一直在尝试使用 glutBitmapCharacter() 渲染文本。
到目前为止,这是我所拥有的 2D 文本渲染功能:
void drawString(int x, int y, char* string) {
int i, len;
glDisable(GL_TEXTURE);
glDisable(GL_TEXTURE_2D);
glDisable(GL_LIGHTING);
glColor3f(1.0f, 0.0f, 0.0f);
glRasterPos2i(x, y);
for (i = 0, len = strlen(string); i < len; i++) {
glutBitmapCharacter(GLUT_BITMAP_HELVETICA_18, (int)string[i]);
}
glEnable(GL_TEXTURE);
glEnable(GL_TEXTURE_2D);
glEnable(GL_LIGHTING);
}
Run Code Online (Sandbox Code Playgroud)
在场景渲染函数中,我进行了这个调用:
drawString(0, 0, "TESTING");
Run Code Online (Sandbox Code Playgroud)
这些是唯一将显示任何文本的 x 和 y 值,在这种情况下,“TESTING”出现在屏幕中间,“TE”为红色(我想要的颜色),“STING”为黑色。
我看到的处理这个函数的所有代码都使用了早期版本的 openGL 和不推荐使用的代码,所以我不知道该怎么做。
我一直在尝试编写一个图形应用程序来演示大学项目的机器学习,我一直在用Python开发它.因为Python是一种非常慢的语言,所以我一直在寻找加速运行时执行的方法,并且偶然发现了Cython.我对C/C++还不是很熟悉,但我已经尽可能静态地输入了我的代码(尽管警告说这会降低可读性/灵活性;这不是我目前主要关心的问题).
但是,我并没有真正注意到这种实现方式与纯Python相比有任何重大改进,我想知道是否有人有任何关于如何加速它的建议.我会很高兴加速10倍,但我不确定这是多么逼真.
̶I̶̶h̶a̶v̶e̶n̶'̶t̶̶p̶r̶o̶f̶i̶l̶e̶d̶̶m̶y̶̶c̶o̶d̶e̶̶y̶e̶t̶我已经对我的代码进行了描述,结果链接如下.
因为它仍在进行中,所以布局不是很好,但我已经完成了一些简单的功能分组.
源代码可以在这里找到.代码中最相关的部分发布在下面.
.
迭代给定的pad的内存:
cdef findBestApproximation(int padindex):
cdef double last_collision_x
cdef double last_collision_y
cdef double last_collision_i_angle
cdef double last_collision_i_speed
cdef double last_collision_f_angle
cdef double last_collision_f_speed
cdef double x_divergence
cdef double y_divergenve
cdef double f_angular_divergence
cdef double divergence
printData("FINDING APPROXIMATION FOR PAD %s...\n" % padindex)
pad = Pads.padlist[padindex]
memory = pad.memory
ball = Balls.ball
if not memory:
approximation = getPadMidpoint(padindex)
return approximation
collision_data = getCollisionData()
(last_collision_x, last_collision_y, last_collision_i_angle,
last_collision_i_speed, last_collision_f_angle,
last_collision_f_speed) = collision_data
best_approx = 0 …Run Code Online (Sandbox Code Playgroud)