Closed filipwasil closed 7 years ago
It can be added to sources to main directory as "editors", with separate build option in options.cmake
@MiOgonowski
Any questions ? ;)
I'm starting analysis of current code, soon I be able to discuss about architecture etc.
There is project on gerrit for editor(i downloaded it from git hub) there is need change in cmake from c++11 to 14 if we want code to compile.
Approved ! :)
sob., 29.10.2016, 20:37 użytkownik revcorey notifications@github.com napisał:
There is project on gerrit for editor(i downloaded it from git hub) there is need change in cmake from c++11 to 14 if we want code to compile.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/filipwasil/fillwave/issues/89#issuecomment-257108238, or mute the thread https://github.com/notifications/unsubscribe-auth/ABxGvfmL8V5e4SwJdhTYJHhZvHk7Teyvks5q45JygaJpZM4KBjOa .
Ok, As I understand you want simple editor for examples, no full editor like in other enignes? There are some editors for engines in qt and I'm planing to check code.
Editor which will make possible to edit in runtime basic engine features would be probably the best option. Examples may guide you :)
2016-11-01 11:59 GMT+01:00 revcorey notifications@github.com:
Ok, As I understand you want simple editor for examples, no full editor like in other enignes? There are some editors for engines in qt and I'm planing to check code.
— You are receiving this because you authored the thread. Reply to this email directly, view it on GitHub https://github.com/filipwasil/fillwave/issues/89#issuecomment-257539408, or mute the thread https://github.com/notifications/unsubscribe-auth/ABxGvYHi2GAWXQ9GGnF-V9ookXt18zqtks5q5xuMgaJpZM4KBjOa .
Pozdrawiam serdecznie / Best Regards
Filip Wasil
filipwasil.bitbucket.org
I tested intel driver on easy example from opengl cookbook. Ogl 3.3 context is created properly. As for editor example I have problem, It's look like the problem is during start of program:
[2016-11-02 22:45:06.853] [Engine] [critical] glewInit returned INVALID_ENUM ... It may happen [2016-11-02 22:45:06.853] [Engine] [info] OpenGL Version: 4.3 (Core Profile) Mesa 12.0.3 [2016-11-02 22:45:06.854] [TextureSystem] [info] GL_EXT_texture_compression_rgtc supported [2016-11-02 22:45:06.854] [TextureSystem] [info] GL_EXT_texture_compression_s3tc supported [2016-11-02 22:45:06.854] [Shader] [info] Compilation status: 1 [2016-11-02 22:45:06.854] [Shader] [info] Compilation status: 1 [2016-11-02 22:45:06.856] [Program] [info] Uniform name=uMVP, location=0, type=35676, num=1 [2016-11-02 22:45:06.860] [Shader] [info] Compilation status: 1 [2016-11-02 22:45:06.861] [Shader] [info] Compilation status: 1 [2016-11-02 22:45:06.864] [Program] [info] Uniform name=uPostProcessingSampler, location=0, type=35678, num=1 [2016-11-02 22:45:06.864] [Texture] [info] Reload [2016-11-02 22:45:06.864] [Texture2D] [info] Reload [2016-11-02 22:45:06.864] [Texture] [info] Reload [2016-11-02 22:45:06.866] [Engine] [critical] [CORE ERROR: 0x0502] [2016-11-02 22:45:06.866] [Engine] [critical] glReadPixels Aborted (core dumped)
I removed abort() from fLogC for test, editor starts but I see only qt window with controls but no 3d graphics in widget. After some time everything crash(I have instaled freesans). bash-4.3$ ./fillwave_qt_example [2016-11-15 20:40:32.876] [Engine] [critical] glewInit returned INVALID_ENUM ... It may happen [2016-11-15 20:40:32.876] [Engine] [info] OpenGL Version: 4.3 (Core Profile) Mesa 12.0.3 [2016-11-15 20:40:32.876] [TextureSystem] [info] GL_EXT_texture_compression_rgtc supported [2016-11-15 20:40:32.876] [TextureSystem] [info] GL_EXT_texture_compression_s3tc supported [2016-11-15 20:40:32.877] [Shader] [info] Compilation status: 1 [2016-11-15 20:40:32.877] [Shader] [info] Compilation status: 1 [2016-11-15 20:40:32.880] [Program] [info] Uniform name=uMVP, location=0, type=35676, num=1 [2016-11-15 20:40:32.884] [Shader] [info] Compilation status: 1 [2016-11-15 20:40:32.885] [Shader] [info] Compilation status: 1 [2016-11-15 20:40:32.888] [Program] [info] Uniform name=uPostProcessingSampler, location=0, type=35678, num=1 [2016-11-15 20:40:32.888] [Texture] [info] Reload [2016-11-15 20:40:32.888] [Texture2D] [info] Reload [2016-11-15 20:40:32.888] [Texture] [info] Reload [2016-11-15 20:40:32.890] [Engine] [critical] [CORE ERROR: 0x0502] [2016-11-15 20:40:32.890] [Engine] [critical] glReadPixels [2016-11-15 20:40:32.891] [Shader] [info] Compilation status: 1 [2016-11-15 20:40:32.891] [Shader] [info] Compilation status: 1 [2016-11-15 20:40:32.893] [Program] [info] Uniform name=uTextureUnit, location=0, type=35678, num=1 [2016-11-15 20:40:32.893] [Program] [info] Uniform name=uNearplane, location=1, type=5126, num=1 [2016-11-15 20:40:32.893] [Program] [info] Uniform name=uFarPlane, location=2, type=5126, num=1 [2016-11-15 20:40:32.894] [TextureLoader] [info] Texture ./assets/alphaMask.png loading ... [2016-11-15 20:40:32.924] [TextureLoader] [info] Image ./assets/alphaMask.png size 1024x1024 pixel 4 bytes per pixel [2016-11-15 20:40:32.924] [TextureLoader] [info] Flipping Texture ./assets/alphaMask.png ... [2016-11-15 20:40:32.939] [TextureSystem] [info] Texture ./assets/alphaMask.png added to manager [2016-11-15 20:40:32.939] [Texture] [info] Reload [2016-11-15 20:40:32.939] [Texture2D] [info] Reload [2016-11-15 20:40:32.939] [Texture] [info] Reload [2016-11-15 20:40:32.944] [Emiter] [critical] Legacy features may cause a GL_INVALID_ENUM on core profile. It may happen. [2016-11-15 20:40:32.945] [Shader] [info] Compilation status: 1 [2016-11-15 20:40:32.946] [Shader] [info] Compilation status: 1 [2016-11-15 20:40:32.954] [Program] [info] Uniform name=uModelMatrix, location=0, type=35676, num=1 [2016-11-15 20:40:32.954] [Program] [info] Uniform name=uViewProjectionMatrix, location=1, type=35676, num=1 [2016-11-15 20:40:32.954] [Program] [info] Uniform name=uPosition, location=2, type=35665, num=1 [2016-11-15 20:40:32.954] [Program] [info] Uniform name=uTimeElapsed, location=3, type=5126, num=1 [2016-11-15 20:40:32.954] [Program] [info] Uniform name=uPointSize, location=4, type=5126, num=1 [2016-11-15 20:40:32.954] [Program] [info] Uniform name=uLifeTime, location=5, type=5126, num=1 [2016-11-15 20:40:32.954] [Program] [info] Uniform name=uAcceleration, location=6, type=35665, num=1 [2016-11-15 20:40:32.954] [Program] [info] Uniform name=uCameraPosition, location=7, type=35665, num=1 [2016-11-15 20:40:32.954] [Program] [info] Uniform name=uTextureUnit, location=8, type=35678, num=1 [2016-11-15 20:40:32.954] [Program] [info] Uniform name=uAlphaCutOff, location=9, type=5126, num=1 [2016-11-15 20:40:32.954] [Program] [info] Uniform name=uColor, location=10, type=35666, num=1 [2016-11-15 20:40:32.954] [TextureLoader] [info] Texture ./FreeSans.png loading ... [2016-11-15 20:40:32.954] [TextureLoader] [critical] Texture ./FreeSans.png not found [2016-11-15 20:40:32.954] [TextureSystem] [info] Texture ./FreeSans.png not found Could not open .ttf file Could not open .ttf file [2016-11-15 20:40:32.954] [TextureLoader] [info] Texture ./FreeSans.png loading ... [2016-11-15 20:40:32.954] [TextureLoader] [critical] Texture ./FreeSans.png not found [2016-11-15 20:40:32.954] [TextureSystem] [info] Texture ./FreeSans.png not found [2016-11-15 20:40:32.954] [Engine] [critical] No text added. Could not write to metadata file: FreeSans.meta Aborted (zrzut pamięci)
We can base code editor on http://doc.qt.io/qt-5/qtopengl-hellogl2-example.html with my Q_Property changes.
Basing on example_simple I had prepare simple test before I will go forward.code
void Renderer::initializeGL()
{
mEngine = unique_ptr<Engine>(new Engine(mArgc, mArgv));
mEngine->setCurrentScene(make_unique<Scene>());
mEngine->getCurrentScene()->setCamera(
make_unique<CameraPerspective>(glm::vec3(0.0, 0.0, 16.0),
glm::quat(),
glm::radians(90.0),
1.0,
0.1,
1000.0));
/* Models */
mEngine->getCurrentScene()->attach(make_unique<Model>
(mEngine.get(),
ProgramLoader(mEngine.get()).getDefault(),
"meshes/sphere.obj", "255_255_255.color"));
now = 0;
}
void Renderer::paintGL()
{
GLfloat timeSinceLastFrameInSec;
if (mTimeExpired == 0.0f) {
mTimeExpired = now;
}
timeSinceLastFrameInSec = now - mTimeExpired;
mTimeExpired = now;
mEngine->draw(timeSinceLastFrameInSec);
now +=1;
//mEngine->drawLines(0.0f);
update();
}
But it's fail with log [2016-12-27 19:50:11.500] [Mesh] [critical] [CORE ERROR: 0x0502] [2016-12-27 19:50:11.500] [Mesh] [critical] glDrawElements failed I see that .obj file is load corectly(logs show this).
I'm missing something?
There is need for connection between menu and scene. Prerequisites:
class QSliderExtended : public QSlider
{
public:
setControler(Controller* cont) // We connect Controller slot prepareCommand with updateScene //signal. this implementation can be in constructor or not.
signal:
updateScene(QString s1, int value);
slot:
prepareMessage(int value);
}
we connect signal changeValue in QSliderExtended with slot prepareMessage in QSliderExtended . in prepareMessage slot:
auto nameOfWidget = this->accessibleName();
enit (nameOfWidget, value);
Now controler:
Class Controller
{
slot:
prepareCommand(QString s1, int value);
private:
QObject* scene;
}
In controler class, prepareCommand slot:
scene->setProperty("name", s1);
scene->setProperty("value" value); // In real code should be std:pair
Perhaps some kind of observer? Edit: We can have another implementation without Controller. In this case menu widgets have pointer for scenerio and they use directly property system or signal/slot system for example:
class QSliderExtended : public QSlider
{
public:
setScene(QObject* scene)
slot:
prepareMessage(int value);
private:
QObject* mScene;
}
we connect signal changeValue in QSliderExtended with slot prepareMessage in QSliderExtended . in prepareMessage:
pair data = make_pair(this->accessibleName(),value)
scene->setproperty("data", data); // or we can use signal/slot system instead of property
Ok, I have idea. But first I will define the problem. What we want? 1) Scene want information what parameter should be change(with value) 2)Elements of menu interface are not aware about existence of scene, they simply changes their values, and give us information about that, and that is everything. How to achieve this? I think about two different solutions. Solution 1 with some kind of controller ad. 1) In scene we add function(updateValue) or property system to update parameter in scene, and argument will be std::pair<Name,Value> , why pair? We must know what value should be change(first in pair), and value(second). How updateValue(pair) function will be implemented depends on who programming the scene. In example Scene class.
Scene::updateValue(std:pair<QString,QString> up) // or Scene::updateValue(std:pair<QString,QVariant> up)
{
if (!mValueMap.contains(up.first))
{
return;
}
mValueMap[up.first] = up.second; //In this map we have all values relevant to scene, for example how much sphere to display
}
I'm not proud of this mValueMap variable, but thanks of that we can easy change values. Perhaps I can try to use property system to change values. ad. 2) We create controller class. This class have slot called updateValue(QWidget * value). Every menu element have connected his valueChanged first to QSignalMapper and this mapper is connected to updateValue. Why I need to map signal? I need the object who changed his value, I can't simply connect valueChanged to controller I need too know who send that signal.
updateValue(QWidget * value)
{
auto Name = value->property("objectName") //It is property from QWidget
auto Value = value->property("value") //property in derivative class QSlider,QDial etc.
//We need to check isValid because above we have QVariant
//Now update scene
auto pair = pair{ Name.toString(), Value.toString()}; // or pair{ Name.toString(), Value};
scene->updateValue(pair);
}
Scenario 2 This scenario is similar to first one. We do not have controller here, we have updateValue(QWidget* value) inside of scene. I'm not prefer this but is possible.
Another solutions. We can create controller like in point 2 in first scenario but we will try to set values not by some special function but by QProperty, we will try to use QMetaObject to take all possible properties from scene class and we will find interesting property.
updateValue(QWidget * value)
{
const QMetaObject* metaObject = scene->metaObject();
QStringList properties;
for(int i = metaObject->propertyOffset(); i < metaObject->propertyCount(); ++i)
properties << QString::fromLatin1(metaObject->property(i).name());
auto Name = value->property("objectName") //It is property from QWidget
auto Value = value->property("value") //property in derivative class QSlider,QDial etc.
if(properties.contains(Name.toString()))
{
//set value by property system
}
}
It can be harder to maintain, and code in my opinion.
Good job @revcorey
On ubuntu 16.04 we have such error
In file included from /home/filip/Projects/fillwave/InteractiveDemo/src/common/MainWidget.cpp:6:0: /home/filip/Projects/fillwave/InteractiveDemo/src/./scene/sceneImp/TextScene.h:9:91: error: macro "Q_PROPERTY" passed 2 arguments, but takes just 1 Q_PROPERTY(QMap<QString, QVariant> sceneParameter READ getParameters WRITE setParameters) ^ /home/filip/Projects/fillwave/InteractiveDemo/src/./scene/sceneImp/TextScene.h:9:3: error: ‘Q_PROPERTY’ does not name a type Q_PROPERTY(QMap<QString, QVariant> sceneParameter READ getParameters WRITE setParameters) ^ src/CMakeFiles/fillwaveInteractiveDemo.dir/build.make:110: recipe for target 'src/CMakeFiles/fillwaveInteractiveDemo.dir/common/MainWidget.cpp.o' failed make[2]: [src/CMakeFiles/fillwaveInteractiveDemo.dir/common/MainWidget.cpp.o] Error 1 CMakeFiles/Makefile2:127: recipe for target 'src/CMakeFiles/fillwaveInteractiveDemo.dir/all' failed make[1]: [src/CMakeFiles/fillwaveInteractiveDemo.dir/all] Error 2 Makefile:149: recipe for target 'all' failed make: *** [all] Error 2
Also on ubuntu 16.04 we have:
CMake Error at src/CMakeLists.txt:31 (if): if given arguments:
"STREQUAL" "ON"
Unknown arguments specified
Probably we should check version of cmake before doing so
Hey, In order to prepare correct cpack files I must turn off tests(gtest), turn on cpack(developers do not need to generete pkg every time) and choose correct pkg type. I added 3 variables to cmake. for example for relase(from script file in /scripts). cmake .. -DTESTSTATUS=FALSE -DPKGSTATUS=ON -DPKGTYPE=DEB
problem with engine, patch on https://1drv.ms/u/s!AtcBAjYs2dSMhGAgqYjDlOGc0you. My log ''' /home/radek/fillwave/InteractiveDemo/cmake-build-debug/fillwaveInteractiveDemo [2017-04-29 17:26:51.386] [Engine] [critical] glewInit returned INVALID_ENUM ... It may happen [2017-04-29 17:26:51.386] [Engine] [info] OpenGL Version: 3.3 (Core Profile) Mesa 12.0.6 [2017-04-29 17:26:51.386] [TextureSystem] [info] GL_EXT_texture_compression_rgtc supported [2017-04-29 17:26:51.387] [Shader] [info] Compilation status: 1 [2017-04-29 17:26:51.387] [Shader] [info] Compilation status: 1 [2017-04-29 17:26:51.388] [Program.cpp] [info] Uniform name=uMVP, location=0, type=35676, num=1 [2017-04-29 17:26:51.392] [Shader] [info] Compilation status: 1 [2017-04-29 17:26:51.393] [Shader] [info] Compilation status: 1 [2017-04-29 17:26:51.393] [Program.cpp] [info] Uniform name=uPostProcessingSampler, location=0, type=35678, num=1 [2017-04-29 17:26:51.394] [Texture] [info] Reload [2017-04-29 17:26:51.394] [Texture2D] [info] Reload [2017-04-29 17:26:51.394] [Texture] [info] Reload [2017-04-29 17:26:51.410] [Shader] [info] Compilation status: 1 [2017-04-29 17:26:51.410] [Shader] [info] Compilation status: 1 [2017-04-29 17:26:51.412] [Program.cpp] [info] Uniform name=uTextureUnit, location=0, type=35678, num=1 [2017-04-29 17:26:51.412] [Program.cpp] [info] Uniform name=uNearplane, location=1, type=5126, num=1 [2017-04-29 17:26:51.412] [Program.cpp] [info] Uniform name=uFarPlane, location=2, type=5126, num=1 [2017-04-29 17:26:51.420] [Shader] [info] Compilation status: 1 [2017-04-29 17:26:51.421] [Shader] [info] Compilation status: 1 [2017-04-29 17:26:51.442] [Program.cpp] [info] Uniform name=uModelMatrix, location=0, type=35676, num=1 [2017-04-29 17:26:51.442] [Program.cpp] [info] Uniform name=uViewProjectionMatrix, location=1, type=35676, num=1 [2017-04-29 17:26:51.443] [Program.cpp] [info] Uniform name=uCameraPosition, location=2, type=35665, num=1 [2017-04-29 17:26:51.443] [Program.cpp] [info] Uniform name=uSpotLights[0].position, location=-1, type=35666, num=1 [2017-04-29 17:26:51.443] [Program.cpp] [info] Uniform name=uSpotLights[0].intensity, location=-1, type=35666, num=1 [2017-04-29 17:26:51.443] [Program.cpp] [info] Uniform name=uSpotLights[0].mvp, location=-1, type=35676, num=1 [2017-04-29 17:26:51.443] [Program.cpp] [info] Uniform name=uSpotLights[1].position, location=-1, type=35666, num=1 [2017-04-29 17:26:51.443] [Program.cpp] [info] Uniform name=uSpotLights[1].intensity, location=-1, type=35666, num=1 [2017-04-29 17:26:51.443] [Program.cpp] [info] Uniform name=uSpotLights[1].mvp, location=-1, type=35676, num=1 [2017-04-29 17:26:51.443] [Program.cpp] [info] Uniform name=uSpotLights[2].position, location=-1, type=35666, num=1 [2017-04-29 17:26:51.443] [Program.cpp] [info] Uniform name=uSpotLights[2].intensity, location=-1, type=35666, num=1 [2017-04-29 17:26:51.443] [Program.cpp] [info] Uniform name=uSpotLights[2].mvp, location=-1, type=35676, num=1 [2017-04-29 17:26:51.443] [Program.cpp] [info] Uniform name=uSpotLights[3].position, location=-1, type=35666, num=1 [2017-04-29 17:26:51.443] [Program.cpp] [info] Uniform name=uSpotLights[3].intensity, location=-1, type=35666, num=1 [2017-04-29 17:26:51.443] [Program.cpp] [info] Uniform name=uSpotLights[3].mvp, location=-1, type=35676, num=1 [2017-04-29 17:26:51.443] [Program.cpp] [info] Uniform name=uSpotLights[4].position, location=-1, type=35666, num=1 [2017-04-29 17:26:51.443] [Program.cpp] [info] Uniform name=uSpotLights[4].intensity, location=-1, type=35666, num=1 [2017-04-29 17:26:51.443] [Program.cpp] [info] Uniform name=uSpotLights[4].mvp, location=-1, type=35676, num=1 [2017-04-29 17:26:51.444] [Program.cpp] [info] Uniform name=uSpotLights[5].position, location=-1, type=35666, num=1 [2017-04-29 17:26:51.444] [Program.cpp] [info] Uniform name=uSpotLights[5].intensity, location=-1, type=35666, num=1 [2017-04-29 17:26:51.444] [Program.cpp] [info] Uniform name=uSpotLights[5].mvp, location=-1, type=35676, num=1 [2017-04-29 17:26:51.444] [Program.cpp] [info] Uniform name=uSpotLights[6].position, location=-1, type=35666, num=1 [2017-04-29 17:26:51.444] [Program.cpp] [info] Uniform name=uSpotLights[6].intensity, location=-1, type=35666, num=1 [2017-04-29 17:26:51.444] [Program.cpp] [info] Uniform name=uSpotLights[6].mvp, location=-1, type=35676, num=1 [2017-04-29 17:26:51.444] [Program.cpp] [info] Uniform name=uSpotLights[7].position, location=-1, type=35666, num=1 [2017-04-29 17:26:51.444] [Program.cpp] [info] Uniform name=uSpotLights[7].intensity, location=-1, type=35666, num=1 [2017-04-29 17:26:51.444] [Program.cpp] [info] Uniform name=uSpotLights[7].mvp, location=-1, type=35676, num=1 [2017-04-29 17:26:51.444] [Program.cpp] [info] Uniform name=uLightAmbientIntensity, location=27, type=35666, num=1 [2017-04-29 17:26:51.444] [Program.cpp] [info] Uniform name=uLightDiffuseIntensity, location=28, type=35666, num=1 [2017-04-29 17:26:51.444] [Program.cpp] [info] Uniform name=uLightSpecularIntensity, location=29, type=35666, num=1 [2017-04-29 17:26:51.444] [Program.cpp] [info] Uniform name=uPointLights[0].position, location=30, type=35666, num=1 [2017-04-29 17:26:51.444] [Program.cpp] [info] Uniform name=uPointLights[0].intensity, location=31, type=35666, num=1 [2017-04-29 17:26:51.444] [Program.cpp] [info] Uniform name=uPointLights[0].mvp, location=32, type=35676, num=1 [2017-04-29 17:26:51.444] [Program.cpp] [info] Uniform name=uPointLights[1].position, location=33, type=35666, num=1 [2017-04-29 17:26:51.444] [Program.cpp] [info] Uniform name=uPointLights[1].intensity, location=34, type=35666, num=1 [2017-04-29 17:26:51.444] [Program.cpp] [info] Uniform name=uPointLights[1].mvp, location=35, type=35676, num=1 [2017-04-29 17:26:51.444] [Program.cpp] [info] Uniform name=uPointLights[2].position, location=36, type=35666, num=1 [2017-04-29 17:26:51.445] [Program.cpp] [info] Uniform name=uPointLights[2].intensity, location=37, type=35666, num=1 [2017-04-29 17:26:51.445] [Program.cpp] [info] Uniform name=uPointLights[2].mvp, location=38, type=35676, num=1 [2017-04-29 17:26:51.445] [Program.cpp] [info] Uniform name=uPointLights[3].position, location=39, type=35666, num=1 [2017-04-29 17:26:51.445] [Program.cpp] [info] Uniform name=uPointLights[3].intensity, location=40, type=35666, num=1 [2017-04-29 17:26:51.445] [Program.cpp] [info] Uniform name=uPointLights[3].mvp, location=41, type=35676, num=1 [2017-04-29 17:26:51.445] [Program.cpp] [info] Uniform name=uNumberOfPointLights, location=42, type=5124, num=1 [2017-04-29 17:26:51.445] [Program.cpp] [info] Uniform name=uNumberOfSpotLights, location=43, type=5124, num=1 [2017-04-29 17:26:51.445] [Program.cpp] [info] Uniform name=uPointShadowMap0, location=44, type=35680, num=1 [2017-04-29 17:26:51.445] [Program.cpp] [info] Uniform name=uPointShadowMap1, location=45, type=35680, num=1 [2017-04-29 17:26:51.445] [Program.cpp] [info] Uniform name=uPointShadowMap2, location=46, type=35680, num=1 [2017-04-29 17:26:51.445] [Program.cpp] [info] Uniform name=uPointShadowMap3, location=47, type=35680, num=1 [2017-04-29 17:26:51.445] [Program.cpp] [info] Uniform name=uShadowMap0, location=48, type=35678, num=1 [2017-04-29 17:26:51.445] [Program.cpp] [info] Uniform name=uShadowMap1, location=49, type=35678, num=1 [2017-04-29 17:26:51.445] [Program.cpp] [info] Uniform name=uShadowMap2, location=50, type=35678, num=1 [2017-04-29 17:26:51.445] [Program.cpp] [info] Uniform name=uShadowMap3, location=51, type=35678, num=1 [2017-04-29 17:26:51.445] [Program.cpp] [info] Uniform name=uShadowMap4, location=52, type=35678, num=1 [2017-04-29 17:26:51.445] [Program.cpp] [info] Uniform name=uShadowMap5, location=53, type=35678, num=1 [2017-04-29 17:26:51.446] [Program.cpp] [info] Uniform name=uShadowMap6, location=54, type=35678, num=1 [2017-04-29 17:26:51.446] [Program.cpp] [info] Uniform name=uShadowMap7, location=55, type=35678, num=1 [2017-04-29 17:26:51.446] [Program.cpp] [info] Uniform name=uColorPicking, location=56, type=35670, num=1 [2017-04-29 17:26:51.446] [Program.cpp] [info] Uniform name=uFogEffect, location=57, type=35670, num=1 [2017-04-29 17:26:51.446] [Program.cpp] [info] Uniform name=uFogColor, location=58, type=35665, num=1 [2017-04-29 17:26:51.446] [Program.cpp] [info] Uniform name=uFogNearDistance, location=59, type=5126, num=1 [2017-04-29 17:26:51.446] [Program.cpp] [info] Uniform name=uFogFarDistance, location=60, type=5126, num=1 [2017-04-29 17:26:51.446] [Program.cpp] [info] Uniform name=uPainterEffect, location=61, type=35670, num=1 [2017-04-29 17:26:51.446] [Program.cpp] [info] Uniform name=uPainterColor, location=62, type=35666, num=1 [2017-04-29 17:26:51.446] [Program.cpp] [info] Uniform name=uTextureOnlyEffect, location=63, type=35670, num=1 [2017-04-29 17:26:51.446] [Program.cpp] [info] Uniform name=uBoostColorEffect, location=64, type=35670, num=1 [2017-04-29 17:26:51.446] [Program.cpp] [info] Uniform name=uBoostColorFactor, location=65, type=5126, num=1 [2017-04-29 17:26:51.446] [Program.cpp] [info] Uniform name=uDiffuseTextureUnit, location=66, type=35678, num=1 [2017-04-29 17:26:51.446] [Program.cpp] [info] Uniform name=uNormalTextureUnit, location=67, type=35678, num=1 [2017-04-29 17:26:51.446] [Program.cpp] [info] Uniform name=uSpecularTextureUnit, location=68, type=35678, num=1 [2017-04-29 17:26:51.446] [Program.cpp] [info] Uniform block name=uSpotLightsUBO, index=0, size=768 [2017-04-29 17:26:51.447] [Engine] [info] Reading model meshes/sphere.obj [2017-04-29 17:26:51.449] [Shader] [info] Compilation status: 1 [2017-04-29 17:26:51.450] [Program.cpp] [info] Uniform name=uMVP, location=0, type=35676, num=1 [2017-04-29 17:26:51.450] [Shader] [info] Compilation status: 1 [2017-04-29 17:26:51.451] [Shader] [info] Compilation status: 1 [2017-04-29 17:26:51.452] [Program.cpp] [info] Uniform name=uMVP, location=0, type=35676, num=1 [2017-04-29 17:26:51.452] [Program.cpp] [info] Uniform name=uModelMatrix, location=1, type=35676, num=1 [2017-04-29 17:26:51.452] [Program.cpp] [info] Uniform name=uLightPosition, location=2, type=35665, num=1 [2017-04-29 17:26:51.452] [TextureLoader] [info] Texture /home/radek/fillwave/InteractiveDemo/cmake-build-debug/255_255_255.color loading ... [2017-04-29 17:26:51.452] [TextureLoader] [info] Color texture /home/radek/fillwave/InteractiveDemo/cmake-build-debug/255_255_255.color generation and loading ... [2017-04-29 17:26:51.454] [TextureSystem] [info] Texture /home/radek/fillwave/InteractiveDemo/cmake-build-debug/255_255_255.color added to manager [2017-04-29 17:26:51.455] [Texture] [info] Reload [2017-04-29 17:26:51.455] [Texture2D] [info] Reload [2017-04-29 17:26:51.455] [Texture] [info] Reload [2017-04-29 17:26:51.461] [Shader] [info] Compilation status: 1 [2017-04-29 17:26:51.461] [Shader] [info] Compilation status: 1 [2017-04-29 17:26:51.463] [Program.cpp] [info] Uniform name=uPositionMap, location=0, type=35678, num=1 [2017-04-29 17:26:51.466] [Program.cpp] [info] Uniform name=uSampleRadius, location=1, type=5126, num=1 [2017-04-29 17:26:51.466] [Program.cpp] [info] Uniform name=uP, location=2, type=35676, num=1 [2017-04-29 17:26:51.466] [Program.cpp] [info] Uniform name=uRandomVectors[0], location=3, type=35665, num=64 [2017-04-29 17:26:51.466] [Shader] [info] Compilation status: 1 [2017-04-29 17:26:51.467] [Shader] [info] Compilation status: 1 [2017-04-29 17:26:51.468] [Program.cpp] [info] Uniform name=uMVP, location=0, type=35676, num=1 [2017-04-29 17:26:51.468] [Program.cpp] [info] Uniform name=uMVPosition, location=1, type=35676, num=1 [2017-04-29 17:26:51.713] [Mesh] [critical] [CORE ERROR: 0x0502] [2017-04-29 17:26:51.713] [Mesh] [critical] glDrawElements failed
'''
As for ubuntu 16.04 I know what to do. Fix soon.
Error on windows 10 on intel HD card. [2017-05-14 17:15:01.120] [Shader] [critical] Compilation: ERROR: 0:109: 'texture2D' : function is removed in Forward Compatible context
There is an existing repository: https://github.com/filipwasil/fillwave-examples
which contains fillwave engine examples. The examples itself should derive from one base interface class (IExample lets say) which hadne IO operations as well. Example interface:
prepare(); render() = 0; finish(); ...
onMouseClick(); onKeyPress(); ...
std::vector getUILayout;
Ownership: IExample implementation should come to Context constructor as parameter (dependency injection).
It will make mocking the IExample possible.
Testing itself would be a subject of discussion.
Now the context should be actually a QT context (see examples).
http://plantuml.com/plantuml/png/ytIjICmjo4bLiAdHrLM0SW8IYqeoatDIYxayiKcxfgMb9fVWa0pFI2n9BKijukBoTCxFAqcjA5781yh2r78XT5affAUMX7hw95RcbvPeQ2hOAXWWIsRcPM8HJKd5BbwKcfUIMeGfdf6ObvAJwfjVMfoAIz8xjH8Y1G00
IExample may be splitted into IExampleModel and IExampleView. IContext will act as controller. Naming can be changed of course.
Basic UI of qt editor is already well defined:
https://github.com/filipwasil/fillwave_editor_particles