Hey,
Ich hab vor paar monaten mit OpenGL programmieren angefangen, bin aber noch voll der anfänger.
Wie man ein Polygon erstellt hab ich mal gecheckt und so
Ich arbeite mit C++ in QT und hab mit 2D objekten angefangen und habe noch einige fragen probleme:
Was soll ich bei der Initialisierung verwenden von meinem GLWidget?
Was soll ich bei resizeGL verwenden?
und was zusätzlich bei paintGL?
und wenn ich mein Polygon erstellt habe.
wie bewege ich am besten mein objekt?
hier ist mal ein code den ich erstellt habe:
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
#include "glwidget.h"
#include <gl/GLU.h>
GLWidget::GLWidget(QWidget *parent) : QGLWidget(parent)
{
}
void GLWidget::initializeGL()
{
glDisable(GL_TEXTURE_2D);
glDisable(GL_DEPTH_TEST);
glDisable(GL_COLOR_MATERIAL);
glEnable(GL_BLEND);
glEnable(GL_POLYGON_SMOOTH);
glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
glClearColor(0, 0, 0, 0);
}
void GLWidget::resizeGL(int w,int h)
{
glViewport(0, 0, w, h);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
gluPerspective(45.0f,(GLfloat)w/(GLfloat)h,0.1f,100.0f);
glMatrixMode(GL_MODELVIEW);
glLoadIdentity();
}
|
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
void GLWidget::paintGL()
{
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glColor3f(12,22,0);
glBegin(GL_POLYGON);
glVertex2f(-0.1f,0.1f);
glVertex2f(-0.1f,-0.1f);
glVertex2f(0.1f,-0.1f);
glVertex2f(0.1f,0.1f);
glEnd();
glLoadIdentity();
glTranslatef(0.0f,0.0f,-2.0f);
}
void GLWidget::movePolygon()
{
glLoadIdentity();
glTranslatef(1.0f,0.0f,-5.0f);
updateGL();
}
|
wenn ich die movePolygon methode aufrufe passiert nichts jedoch,
mit nem MouseEvent hat es funktioniert
|
Quellcode
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
void GLWidget::mouseMoveEvent(QMouseEvent *event)
{
float x = event->x();
cout << event->x() << "=x";
glLoadIdentity();
if(x < 175)
{
glTranslatef(x/100 - 0.9f,0.0f,0.0f);
}
else
{
glTranslatef(0.9f,0.0f,0.0f);
}
updateGL();
}
|
das hat funktioniert.
was funktioniert bei dem movePolygon nicht?
wie würde man das am besten machen um ein Objekt zu bewegen?
und was sagt ihr zu meinen Initialisierungen(ich bin mir noch immer nicht ganz im klaren was die genau machen)
würde mich freuen auf eine antwort.
mfg
slei