我搜索了輕量級GUI,發現了幾個(例如FLTK),但我真正想要的是Linux/Ubuntu上的快速庫。它不需要跨平臺。它必須快速。比xlib更快
我的申請很簡單。我有一個畫布說800x800,我是: - 在網格中繪製200x200方格 - 幾個字符串文本 - 一些人可以按下鼠標的熱點。
我試圖儘可能快地推幀率。我已經找到X11 C++示例代碼。
有沒有比X快的庫?
TIA
更新:這裏是在過剩的樣本代碼。它看起來像我可以在我的筆記本電腦上運行20ms內的一幀(運行Ubuntu 12.04的索尼Vaio i7-3632QM 2.2Ghz)。順便說一下,它看起來像電視「雪」時,它運行...
我無法獲得與Xlib運行等效的示例。它始終以類似於以下錯誤的結尾終止: 「XIO:X服務器發生致命IO錯誤11(資源暫時不可用):」86「請求(86個已知處理),剩餘10個事件。」
#include <GL/glut.h>
#include <cstdlib>
#include <pthread.h>
#include <unistd.h>
int win_w = 0.0;
int win_h = 0.0;
#include <pthread.h>
#include <iostream>
void drawGrid(int size)
{
const int cellsize = 3;
const int gridsize = size * cellsize;
for (int y = 0; y < gridsize; y += cellsize)
{
for (int x = 0; x < gridsize; x += cellsize)
{
int c = rand() % 100;
if (c < 33)
glColor3f(1.0, 0.0, 0.0);
else if (c < 66)
glColor3f(0.0, 1.0, 0.0);
else
glColor3f(0.0, 0.0, 1.0);
glRecti(x, y, x + cellsize, y + cellsize);
}
}
}
void display(void)
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
glOrtho(0, win_w, 0, win_h, -1, 1);
glColor3f(0.0, 0.0, 1.0);
glTranslatef(30, 30, 0);
drawGrid(200);
glFlush();
glutSwapBuffers();
}
void reshape(int w, int h)
{
win_w = w;
win_h = h;
glViewport(0, 0, w, h);
}
static int lasttime = 0L;
void idle()
{
const int timePerFrame = 19; //ms
int t = glutGet(GLUT_ELAPSED_TIME);
int delay = timePerFrame - (t - lasttime);
if (delay < 0)
{
std::cout << t << " " << lasttime << " " << delay << "\n";
}
else
{
::usleep(delay * 1000);
}
glutPostRedisplay();
lasttime = glutGet(GLUT_ELAPSED_TIME);
}
int main(int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_RGBA | GLUT_DEPTH | GLUT_DOUBLE);
glutInitWindowSize(800, 800);
glutCreateWindow("test Glut");
glutDisplayFunc(display);
glutReshapeFunc(reshape);
glutIdleFunc(idle);
glutMainLoop();
return 0;
}
潛在的OpenGL。你確定它是減緩你的工具包,而不是你的代碼,或者你編碼它的方式嗎? – Mat 2013-05-02 12:53:29
x不是gui庫 – 2013-05-02 12:55:30
墊子:不,我不確定,這是一個很好的問題。但是你可以看到我的選擇:我可以花很長時間弄清楚我的xlib代碼出了什麼問題,然後*發現有更簡單,更快捷等等,或者我現在可以問問什麼,花費什麼時間學習新的工具/ lib等。 – JohnA 2013-05-03 02:59:20