Use OpenGL or Qt? [closed] - c++

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
There is not much experience with OpenGL to create a two-dimensional scene. I decided to work with 3D and got up with this question: how best?
1) Use a normal OpenGL?
2) Work with OpenGL through Qt?
The main goal - to provide real-world experience working with graphics. And these questions were formed:
1) Which of the options used in real game development (when the company originally wrote the engine)?
2) Which of the options would be more advantageous for an employer? If I have experience with OpenGL or OpenGL ES in Qt?
P.S.I'm sorry, Not very good at English. I hope for an answer!

Qt is an UI library, it has nothing to do with whether you wanna use OpenGL or not.
OpenGL and Qt are not exclusive, though. Eat a burger or burger + coke? – rolevax.
if you want your application have a nice UI when you're not in 3D mode, you need a UI library, for example, game start screens.
Game Engines are developed based on 3D libraries like OpenGL DirectX Metal etc.
none of the options would be more advantageous for an employer. It's just libraries, you can just learn it if you're good at coding.

Qt is a GUI library, not a rendering library. You can create an OpenGL context using the QOpenGL class. Although OpenGL is a 3D API, it's very much possible to render 2D graphics by using an orthagonal projection matrix and not using the Z coordinate.
For 2D graphics, though, I recommend using a library like SDL which is very simple and high-level. There are also a ton of games that use it.

Related

Resources for a 3D animation program [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 3 years ago.
Improve this question
I'm trying to develop my own mini animation program like maya, blender, cinema 4d where I can create objects, move them around, render them, etc. Does anyone know any good resources for that? I've found a few but usually when I google for something similar to this all that comes up are game engines. I'm not trying to create a game. And please, don't tell me things like "you need a team", "just use what is already out there", "you're probably not experienced enough"..
Here are some resources I've already found:
https://www.reddit.com/r/cpp/comments/3g1pvf/i_want_to_create_a_3d_engine_from_scratch_where/
https://gamedevelopment.tutsplus.com/tutorials/lets-build-a-3d-graphics-engine-points-vectors-and-basic-concepts--gamedev-8143
https://www.codeproject.com/Articles/1168552/Build-My-Own-D-graphics-engine-step-by-step
Target: Windows
Math
You should know enough linear algebra to know how the various linear transformations in 3D graphics work - translation, scaling, change of coordinate basis, view transformation etc.
You should also know how to render curves and surfaces using splines, Bezier curves, Bezier patches, subdivision methods (e.g., Catmull-Clark) etc.
Mathematics for 3D Game Programming and Computer Graphics is a good place to start if you are unfamiliar with the math.
GUI
After that, you need to pick the libraries for building the application. For building the GUI, if you want to make it easy to port it across platforms, go with Qt. If you only want to target Windows, then go with the native .NET library.
3D Engine
For representing, manipulating, and rendering 3D objects, you could go with the Unity engine. There are a lot of tutorials and books around to teach you how it works.
If you want to go deeper and build your own engine, you can either work with DirectX or OpenGL/Khronos.

Embedded 3d graphic engine with supporting Blender models [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 8 years ago.
Improve this question
I'm trying to develop desktop application. User can load 3d models from Blender with animation (simple object (move, rotate, etc) animation and NLA tracks) and interact with it (rotate model, zoom, click on different object, run animation).
Requirements:
Platforms: Windows, Linux.
High performance
Blender support.
Application's language: C++, C#, maybe another.
I know about Blend4Web (low performance for big model) and Ogre3d (tried to export scene from blender but in app see only black screen unfortunately). I will wonder if I miss something usefull.
Most Graphics Libraries can store files in the WaveFront obj format. libObj can parse and read this format. You should then be able to upload the models to OpenGL and perform the operations that you require.
For a framework to build your app look at GameKit
Using Ogre for graphics, Bullet for physics, OpenAL for sound
OgreKit is most actively developed
Engine is written in C++ and the game logic can be done in C++, Lua scripting or logic bricks
Reads all data from Blender .blend files, with future FBX import planned
Free from viral licenses: only using components using MIT/BSD/Zlib style licenses
CMake cross-platform build system support that works out-of-the-box, see http://cmake.org
Gamekit supports Windows and Mac OSX, Linux, Android and iPhone.
While it doesn't directly read blend files godot is a graphical game building application with python like scripting, it has a gui toolkit that can be used for non-game applications and they offer a blender addon for collada export that is meant to be better than the official one. Being open source you can also adjust it to your needs.

Need advice on 3D and 2D C++ framework selection [closed]

Closed. This question is opinion-based. It is not currently accepting answers.
Want to improve this question? Update the question so it can be answered with facts and citations by editing this post.
Closed 8 years ago.
Improve this question
We are a small company with only 2 programmers. We currently make small 2D and 3D games for desktop and mobile using Adobe Flash/Air. We want to stop using that framework and start learning and developing on C++ because there are much more and better libraries and frameworks available on C++.
I'm not sure about the libraries to use for rendering. I know that Ogre3D is a great rendering engine for 3D content but sometimes we need to make 2D games or "2.5D" games, sometimes with video playback, and all that need to be mixed with 3D scenes.
I know there are 2D frameworks like cocos2D-x and smfl that works with OpenGL (I don't know much about OpenGL) and can do all the 2D things I need, but can those frameworks be combined with Ogre3D? And can it be done without the need of knowing how all the Ogre3D internal stuff or OpenGL works?
If Ogre3D can be combined with any 2D engine, what do I need to learn to merge the frameworks?
Given that you have been using flash, I am guessing you are not porting old C++ code.
Also, since you don't want to know about how the internals of the framework you're using or how OpenGL actually works, you don't need a low level language like C++.
An abundance of open source libraries is not a very good reason to program your game in C++ either.
Unity3D has a free basic license, and provides everything you need out of the box.
For now, you can use planes with textures to do your 2D work, but Unity will also be coming out with a set of Native 2D Tools in the near future. Also, a new GUI system is being created.
For any C++ library you think you may need, there is probably something already built into unity that does what you want. If there isn't, there is probably a .NET port that you can use. And if all else fails, you can write a C interface for any library you need, and use it as a plugin in Unity.
One big problem with Unity though, is that you need Unity Pro to use plugins. Unity licenses are per-platform, So if you decide to use plugins, and release your game for multiple platforms, you could end up paying a lot of money in licensing fees.
Finally, it's not just an application framework you'll need. You'll also need a level editor. Building a 3D level editor is not a trivial task, and given that your team consists of only two people, this fact alone should be enough to seriously consider using Unity.
So unless you are porting old code, need low level access to hardware, or have specific needs for native code, my advice is don't use C++, just use Unity.
Yes, Ogre3D can handle such "2D tasks" as playing a video. Simply a plane in 3D space that it gets projected onto. However for pure 2D projects an 3D rendering engine such as Ogre3D is usually overkill. If you are talking about 2,5D though, you are back in play with Ogre3D.
Regarding integrations: Not completely sure, but I guess those other 2D frameworks need an OpenGL rendering context that you can get from Ogre.
EDIT: Same question has been asked in the official Ogre3D forums.
We are another small team working on game development.
We tried many rendering engines and finally settled down with Irrlicht Rendering engine. Irrlicht is no way better than Ogre 3D or am not trying to prove that. We felt Irrlicht more flexible for our need. It also supports 2D rendering and it is quite fast with batching. Irrlicht can be easily ported to other platforms, It took us a week to port it to Google Chrome NaCl.
Irrlicht is a very basic rendering system that supports OpenGL and OpenGL ES, so its easy for your to go mobile. You can add any advanced features without much effort. Some of our games are available for iOS, Android, Windows PC, Mac OSX, Linux and Google Chrome Native Client.

video file + fragment shader under Linux [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 3 years ago.
Improve this question
coming from Windows (MSVC++ 2005):
What SDK or alike do you recommend to port an C++ application (DirectShow+Direct3D) to Linux playing video file + using fragment shaders?
is there any reason you need a fragment shader at all? (are you doing post processing on the video images?). You don't need to do any shader coding to get a video playing with OpenGL.
I would use ffmpeg (libavcodec actually) to do the video decoding. Displaying a frame just requires an OpenGL texture and a call to glTexSubImage2D each frame to do the update.
Using FFMPEG in C/C++
You need to use OpenGL instead.
Some tip for the implementation:
- To achieve a good performance you
need to make sure a good video card
driver is installed.
- If you are not familiar with OpenGL
start it with the 'Red book' - OpenGL
Programming Guide
- You may need to download the latest extension header from here
http://www.opengl.org/registry/
- The library GLEW may help you in
identifying the available
extension.
- Include the GL/gl.h and the glext.h file in your project
- Link to the driver's opengl dynamic library: /usr/lib64/libGL.so or simmilar
i would also check the gstreamer framework on linux if you need to port a more complicated directshow application. it also has some sort of graph for media playback to build. it is totally different, but if you have experience and the need for complicated directshow, then you will see some analogy.
and gstreamer also has an opengl plugin for image effects and shaders, ....
http://www.gstreamer.net/
http://www.gstreamer.net/releases/gst-plugins-gl/0.10.1.html

3d Realtime Software Renderer Open Source [closed]

Closed. This question does not meet Stack Overflow guidelines. It is not currently accepting answers.
We don’t allow questions seeking recommendations for books, tools, software libraries, and more. You can edit the question so it can be answered with facts and citations.
Closed 6 years ago.
Improve this question
Is there a good 3d realtime software renderer with features similar to OpenGL/DirectX? Something similar of what cairo or anti-grain do for 2d, but in 3d.
I actually just know Mesa witch has a software OpenGL implementation , and Coco3d.
It should be open source :)
You could have a look into Orge 3D engine assuming you want an abstraction from the raw GL to something that already has a lot of the key features. It's open source too.
I believe the OpenSceneGraph has grown to be pretty competent and widely used.
For a pixel rendering engine why not have look at the DOOM rendering engine sources.
Another smaller and more standard API/OpenGL implementation called TinyGL could be something to look at too.
Technically OpenGL is just a standard, but there are OSS implementations available for download. I'm not sure you want a reference OGL driver though.
For 3d libraries, there are loads. Irrlicht, CrystalSpace, Ogre3d, to name just 3 off Sourceforge's trove list.
The only major open source real-time software renderer besides Mesa I know of is the Quake I engine. However, it's not up to par with current OpenGL or Direct3D capabilities.
If you can do without the source code, you could have a look at the Microsoft WARP10 renderer. It's a high performance implementation of Direct3D 10 on the CPU.
Check out Coin, an implementation of OpenInventor maintained by the company I'm employed by. It's licensed under a dual licensing model - GPL for free/opensource software. It's being actively developed and uses OpenGL to do rendering. It works on "all" platforms and can be easily integrated with Qt.
For standalone alternatives to OpenGL / Direct3D i would look at
Open source implementation of openGl : Mesa3D
Gallium3D
an implemantation of the the openRT specification: directViz
some reasearch to implement realtime RenderMan : RenderMan for realtime and the progress
OpenGL is open source, and should fall back to software rendering in the absense of 3D hardware on the system, provided that all the proper libraries are installed.