기존 이솝 임베디드 포럼의 지식인 서비스가 게시판 형태로 변경되었습니다.
qt에서 opengl es 를 사용하려 합니다
qglwidget을 만들어,
qglwidget에 삼각형을 그리는 간단한 프로그램을 작성했습니다
pc linux에선 삼각형이 잘 디스플레이가 됩니다만
보드에선 qglwidget이 검은색으로만 나오며 아무것도 나타나질 않습니다
이걸로 벌써 3일째네요...
제가 사용하는 보드는 fb가 0~2로 3개입니다
./aaa -qws -display:/dev/fb0~2 로 해봐도 모두 마찬가지입니다
qt-embedded 를 컴파일할때 설정값이 잘못되었을까요?
아래는 제가 사용한 환경설정 입니다
./configure -v -opensource -confirm-license -release -embedded arm -prefix /project/qte-opengles -no-neon -no-mmx -static -little-endian -no-accessibility -shared -no-cups -no-stl -qt-libpng -qt-libjpeg -no-qvfb -no-dbus -qt-freetype -no-nis -no-qt3support -no-largefile -no-libmng -no-separate-debug-info -make examples -make demo -nomake docs -nomake tools -depths 16,18,24 -optimized-qmake -pch -qt-libjpeg -qt-zlib -no-libtiff -ptmalloc -no-webkit -no-script -no-scripttools -xplatform qws/linux-arm-g++ -qt-mouse-tslib -I/home/tslib-master/arm_tslib/include -L/home/tslib-master/arm_tslib/lib -opengl -I/home/work/qt/OpenGLES_QT/OpenGLES -L/home/mali_drv
조언좀 부탁드리겠습니다
#include "glwidget.h"
glwidget::glwidget(QWidget *parent) :
QGLWidget(parent)
{
}
void glwidget::initializeGL() {
//qglClearColor(qtPurple.dark());
// logo = new QtLogo(this, 64);
// logo->setColor(qtGreen.dark());
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
glShadeModel(GL_SMOOTH);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
glEnable(GL_MULTISAMPLE);
static GLfloat lightPosition[4] = { 0.5, 5.0, 7.0, 1.0 };
glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);
}
const GLfloat triangleVertices[] {
// 0.0f, 0.0f, 0.0f,
// -1.0f, 1.0f, 0.0f,
// 1.0f, 1.0f, 0.0f
-1.0f, -0.5f, 0.0f,
1.0f, -0.5f, 0.0f,
0.0f, 0.5f, 0.0f
};
GLfloat points[] {
0.2, 0.2, 0.0,
0.8, 0.2, 0.0,
0.2, 0.8, 0.0,
0.8, 0.8, 0.0,
};
void glwidget::resizeGL(int w, int h)
{
glViewport(0,0,640,300);
glClearColor(1.0f,1.0f,1.0f,1.0f);
}
void glwidget::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
//glColor3f(1.0f, 0.0f, 0.0f);
glColor4f(1.0f,1.0f,1.0f,1.0f);
glEnableClientState(GL_VERTEX_ARRAY);
{
glVertexPointer(3, GL_FLOAT, 0, triangleVertices);
glDrawArrays(GL_TRIANGLE_FAN, 0, 3);
}
glDisableClientState(GL_VERTEX_ARRAY);
}
보드가???
openGL driver 포팅 문제가 아닌가요?
pc x-windows라면 gl driver가 있어서 나올 가능성이 높지만, embedded는 포팅안된 경우가 많을겁니다.
software gl driver가 아닐 경우는....