will try some openGL on android

This commit is contained in:
2016-07-15 15:21:44 +02:00
parent 43148f4d54
commit b188cb992c
4 changed files with 145 additions and 17 deletions

View File

@@ -1,9 +1,12 @@
#include <QGuiApplication>
#include <QQmlApplicationEngine>
#include <QApplication>
#include <QMainWindow>
#include <QGridLayout>
#include "sensors/SensorFactory.h"
#include "map/MapView.h"
#include <iostream>
@@ -25,27 +28,42 @@ public:
};
int main(int argc, char *argv[]) {
// test();
LeListener listener;
WiFiSensor& wifi = SensorFactory::getWiFi();
wifi.addListener(&listener);
wifi.start();
//// test();
// LeListener listener;
// WiFiSensor& wifi = SensorFactory::getWiFi();
// wifi.addListener(&listener);
// wifi.start();
// AccelerometerSensor& acc = SensorFactory::getAccelerometer();
// acc.addListener(&listener);
// acc.start();
//// AccelerometerSensor& acc = SensorFactory::getAccelerometer();
//// acc.addListener(&listener);
//// acc.start();
StepSensor& steps = SensorFactory::getSteps();
steps.addListener(&listener);
steps.start();;
// StepSensor& steps = SensorFactory::getSteps();
// steps.addListener(&listener);
// steps.start();;
std::this_thread::sleep_for(std::chrono::seconds(10000));
// std::this_thread::sleep_for(std::chrono::seconds(10000));
// QGuiApplication app(argc, argv);
//QGuiApplication app(argc, argv);
QApplication app(argc, argv);
QMainWindow* win = new QMainWindow();
QVBoxLayout* lay = new QVBoxLayout();
win->setLayout(lay);
MapView* map = new MapView(win);
lay->addWidget(map);
map->setMinimumHeight(200);
map->setMinimumWidth(200);
win->setMinimumWidth(400);
win->setMinimumHeight(400);
win->show();
// QQmlApplicationEngine engine;
// engine.load(QUrl(QStringLiteral("qrc:/main.qml")));
// return app.exec();
return app.exec();
}

82
map/MapView.cpp Normal file
View File

@@ -0,0 +1,82 @@
#include "MapView.h"
MapView::MapView(QWidget* parent) : QGLWidget(parent) {
};
void MapView::initializeGL() {
qglClearColor(Qt::black);
glEnable(GL_DEPTH_TEST);
glEnable(GL_CULL_FACE);
glShadeModel(GL_SMOOTH);
glEnable(GL_LIGHTING);
glEnable(GL_LIGHT0);
static GLfloat lightPosition[4] = { 0, 0, 10, 1.0 };
glLightfv(GL_LIGHT0, GL_POSITION, lightPosition);
}
void MapView::paintGL() {
glClear(GL_COLOR_BUFFER_BIT | GL_DEPTH_BUFFER_BIT);
glLoadIdentity();
glTranslatef(0.0, 0.0, -10.0);
glRotatef(20 / 16.0, 1.0, 0.0, 0.0);
glRotatef(30 / 16.0, 0.0, 1.0, 0.0);
glRotatef(60 / 16.0, 0.0, 0.0, 1.0);
draw();
}
void MapView::resizeGL(int width, int height) {
int side = qMin(width, height);
glViewport((width - side) / 2, (height - side) / 2, side, side);
glMatrixMode(GL_PROJECTION);
glLoadIdentity();
#ifdef QT_OPENGL_ES_1
glOrthof(-2, +2, -2, +2, 1.0, 15.0);
#else
glOrtho(-2, +2, -2, +2, 1.0, 15.0);
#endif
glMatrixMode(GL_MODELVIEW);
}
void MapView::draw()
{
qglColor(Qt::red);
glBegin(GL_QUADS);
glNormal3f(0,0,-1);
glVertex3f(-1,-1,0);
glVertex3f(-1,1,0);
glVertex3f(1,1,0);
glVertex3f(1,-1,0);
glEnd();
glBegin(GL_TRIANGLES);
glNormal3f(0,-1,0.707);
glVertex3f(-1,-1,0);
glVertex3f(1,-1,0);
glVertex3f(0,0,1.2);
glEnd();
glBegin(GL_TRIANGLES);
glNormal3f(1,0, 0.707);
glVertex3f(1,-1,0);
glVertex3f(1,1,0);
glVertex3f(0,0,1.2);
glEnd();
glBegin(GL_TRIANGLES);
glNormal3f(0,1,0.707);
glVertex3f(1,1,0);
glVertex3f(-1,1,0);
glVertex3f(0,0,1.2);
glEnd();
glBegin(GL_TRIANGLES);
glNormal3f(-1,0,0.707);
glVertex3f(-1,1,0);
glVertex3f(-1,-1,0);
glVertex3f(0,0,1.2);
glEnd();
}

26
map/MapView.h Normal file
View File

@@ -0,0 +1,26 @@
#ifndef MAPVIEW_H
#define MAPVIEW_H
#include <QGLWidget>
class MapView : public QGLWidget {
public:
MapView(QWidget* parent = 0);
protected:
void initializeGL();
void paintGL();
void resizeGL(int width, int height);
private:
void draw();
};
#endif // MAPVIEW_H

View File

@@ -1,6 +1,6 @@
TEMPLATE = app
QT += qml
QT += qml opengl
# android?
#QT += androidextras sensors
@@ -20,6 +20,7 @@ OTHER_FILES += \
SOURCES += \
main.cpp \
map/MapView.cpp
RESOURCES += qml.qrc
@@ -48,7 +49,8 @@ HEADERS += \
sensors/WiFiSensor.h \
misc/Debug.h \
misc/fixc11.h \
sensors/dummy/WiFiSensorDummy.h
sensors/dummy/WiFiSensorDummy.h \
map/MapView.h
DISTFILES += \
android-sources/src/MyActivity.java