Irrlicht unit tests
Re: Irrlicht unit tests
There are some things we can check:
First - run it once more to check if you get the same 2 errors again. Reason is that there is often a bit of a problem with drivers if they are started/shutdown so fast as happens in tests (despite some workarounds where we try to prevent that - never got 100% rid of this problem). So please just run a second time (or alternatively modify the main.cpp to run only those tests that fail).
And if they fail again - the tests write the failed images to tests/results. So in this case results/OpenGL-rttAndAntiAlias.png and results/OpenGL-lineAntiAliasing.png. Can you post those please? Maybe they give me some hint what goes wrong.
First - run it once more to check if you get the same 2 errors again. Reason is that there is often a bit of a problem with drivers if they are started/shutdown so fast as happens in tests (despite some workarounds where we try to prevent that - never got 100% rid of this problem). So please just run a second time (or alternatively modify the main.cpp to run only those tests that fail).
And if they fail again - the tests write the failed images to tests/results. So in this case results/OpenGL-rttAndAntiAlias.png and results/OpenGL-lineAntiAliasing.png. Can you post those please? Maybe they give me some hint what goes wrong.
IRC: #irrlicht on irc.libera.chat
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Re: Irrlicht unit tests
After a fresh reboot both tests (Test 53 'renderTargetTexture' and Test 58 'antiAliasing') are still failing. Re-running them doesn't help. The requested images are listed below:
OpenGL-lineAntiAliasing.png:
OpenGL-rttAndAntiAlias.png:
OpenGL-lineAntiAliasing.png:
OpenGL-rttAndAntiAlias.png:
Сделано в СССР
OS: Ubuntu Linux 22.04 LTS 64 bit
Motherboard: ASUS P5G41-M LE
CPU: Intel Pentium Dual-Core E6300 @ 2.80GHz
RAM: DDR2 @ 8G
GPU: NVIDIA GeForce GT 710 @ 2G (Driver version: 470)
OS: Ubuntu Linux 22.04 LTS 64 bit
Motherboard: ASUS P5G41-M LE
CPU: Intel Pentium Dual-Core E6300 @ 2.80GHz
RAM: DDR2 @ 8G
GPU: NVIDIA GeForce GT 710 @ 2G (Driver version: 470)
Re: Irrlicht unit tests
Interesting. Viewport in both cases wrong (showing only the left half for some reason).
IRC: #irrlicht on irc.libera.chat
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Re: Irrlicht unit tests
Can you try to enforce a compile-error in CGLXManager constructor to find out which define (if any) is used in your case for anti-aliasing?
Like add some 'x' around that place in CGLXManager.cpp:
Then check which line the compiler complains about when compiling Irrlicht. If any - maybe the problem is those are all wrong...
Like add some 'x' around that place in CGLXManager.cpp:
Code: Select all
#if defined(GLX_VERSION_1_4) && defined(GLX_SAMPLE_BUFFERS) // we need to check the extension string!
x GLX_SAMPLE_BUFFERS, 1,
GLX_SAMPLES, Params.AntiAlias, // 18,19
#elif defined(GLX_ARB_multisample)
x GLX_SAMPLE_BUFFERS_ARB, 1,
GLX_SAMPLES_ARB, Params.AntiAlias, // 18,19
#elif defined(GLX_SGIS_multisample)
x GLX_SAMPLE_BUFFERS_SGIS, 1,
GLX_SAMPLES_SGIS, Params.AntiAlias, // 18,19
#endif
IRC: #irrlicht on irc.libera.chat
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Re: Irrlicht unit tests
Introducing compile error as describes generates interesting results, maybe something useful can be found here
Edit: Generated a list of suspect lines using a one line command as shown below, shows all the places worth checking
Code: Select all
g++ -I../../include -Izlib -Ijpeglib -Ilibpng -DIRRLICHT_EXPORTS=1 -g -D_DEBUG -Wall -pipe -fno-exceptions -fno-rtti -MM -MF CGLXManager.d CGLXManager.cpp
g++ -Wall -pipe -fno-exceptions -fno-rtti -I../../include -Izlib -Ijpeglib -Ilibpng -I/usr/X11R6/include -DIRRLICHT_EXPORTS=1 -g -D_DEBUG -c -o CGLXManager.o CGLXManager.cpp
CGLXManager.cpp: In constructor ‘irr::video::CGLXManager::CGLXManager(const irr::SIrrlichtCreationParameters&, const irr::video::SExposedVideoData&, int)’:
CGLXManager.cpp:69:1: error: ‘x’ was not declared in this scope
69 | x GLX_SAMPLE_BUFFERS, 1,
| ^
In file included from CGLXManager.cpp:19:
CGLXManager.cpp:69:6: error: expected ‘}’ before numeric constant
69 | x GLX_SAMPLE_BUFFERS, 1,
| ^~~~~~~~~~~~~~~~~~
CGLXManager.cpp:59:4: note: to match this ‘{’
59 | {
| ^
CGLXManager.cpp:58:8: warning: unused variable ‘visualAttrBuffer’ [-Wunused-variable]
58 | int visualAttrBuffer[] =
| ^~~~~~~~~~~~~~~~
CGLXManager.cpp:91:5: error: ‘visualAttrBuffer’ was not declared in this scope
91 | visualAttrBuffer[17] = 0;
| ^~~~~~~~~~~~~~~~
CGLXManager.cpp:96:53: error: ‘visualAttrBuffer’ was not declared in this scope
96 | configList=glxChooseFBConfig(display, screennr, visualAttrBuffer,&nitems);
| ^~~~~~~~~~~~~~~~
CGLXManager.cpp:132:5: error: ‘visualAttrBuffer’ was not declared in this scope
132 | visualAttrBuffer[15]=Params.Stencilbuffer?1:0;
| ^~~~~~~~~~~~~~~~
CGLXManager.cpp:166:5: error: ‘visualAttrBuffer’ was not declared in this scope
166 | visualAttrBuffer[13] = GLX_DONT_CARE;
| ^~~~~~~~~~~~~~~~
CGLXManager.cpp: At global scope:
CGLXManager.cpp:255:2: error: expected unqualified-id before ‘else’
255 | else
| ^~~~
CGLXManager.cpp:259:1: error: ‘CGLXManager’ does not name a type
259 | CGLXManager::~CGLXManager()
| ^~~~~~~~~~~
CGLXManager.cpp:263:6: error: ‘CGLXManager’ has not been declared
263 | bool CGLXManager::initialize(const SIrrlichtCreationParameters& params, const SExposedVideoData& videodata)
| ^~~~~~~~~~~
CGLXManager.cpp:263:79: error: ‘SExposedVideoData’ does not name a type
263 | bool CGLXManager::initialize(const SIrrlichtCreationParameters& params, const SExposedVideoData& videodata)
| ^~~~~~~~~~~~~~~~~
CGLXManager.cpp: In function ‘bool irr::initialize(const irr::SIrrlichtCreationParameters&, const int&)’:
CGLXManager.cpp:266:2: error: ‘Params’ was not declared in this scope; did you mean ‘params’?
266 | Params=params;
| ^~~~~~
| params
CGLXManager.cpp:269:2: error: ‘CurrentContext’ was not declared in this scope; did you mean ‘glXGetCurrentContext’?
269 | CurrentContext.OpenGLLinux.X11Display=videodata.OpenGLLinux.X11Display;
| ^~~~~~~~~~~~~~
| glXGetCurrentContext
CGLXManager.cpp:269:50: error: request for member ‘OpenGLLinux’ in ‘videodata’, which is of non-class type ‘const int’
269 | CurrentContext.OpenGLLinux.X11Display=videodata.OpenGLLinux.X11Display;
| ^~~~~~~~~~~
CGLXManager.cpp:272:49: error: request for member ‘OpenGLLinux’ in ‘videodata’, which is of non-class type ‘const int’
272 | CurrentContext.OpenGLLinux.X11Window=videodata.OpenGLLinux.X11Window;
| ^~~~~~~~~~~
CGLXManager.cpp:273:7: error: ‘PrimaryContext’ was not declared in this scope
273 | if (!PrimaryContext.OpenGLLinux.X11Window)
| ^~~~~~~~~~~~~~
CGLXManager.cpp: At global scope:
CGLXManager.cpp:281:6: error: ‘CGLXManager’ has not been declared
281 | void CGLXManager::terminate()
| ^~~~~~~~~~~
CGLXManager.cpp: In function ‘void irr::terminate()’:
CGLXManager.cpp:283:17: error: ‘CurrentContext’ was not declared in this scope; did you mean ‘glXGetCurrentContext’?
283 | memset((void*)&CurrentContext, 0, sizeof(CurrentContext));
| ^~~~~~~~~~~~~~
| glXGetCurrentContext
CGLXManager.cpp: At global scope:
CGLXManager.cpp:286:6: error: ‘CGLXManager’ has not been declared
286 | bool CGLXManager::generateSurface()
| ^~~~~~~~~~~
CGLXManager.cpp: In function ‘bool irr::generateSurface()’:
CGLXManager.cpp:288:6: error: ‘glxFBConfig’ was not declared in this scope; did you mean ‘GLXFBConfig’?
288 | if (glxFBConfig)
| ^~~~~~~~~~~
| GLXFBConfig
CGLXManager.cpp:290:3: error: ‘GlxWin’ was not declared in this scope
290 | GlxWin=glXCreateWindow((Display*)CurrentContext.OpenGLLinux.X11Display,(GLXFBConfig)glxFBConfig,CurrentContext.OpenGLLinux.X11Window,NULL);
| ^~~~~~
CGLXManager.cpp:290:36: error: ‘CurrentContext’ was not declared in this scope; did you mean ‘glXGetCurrentContext’?
290 | GlxWin=glXCreateWindow((Display*)CurrentContext.OpenGLLinux.X11Display,(GLXFBConfig)glxFBConfig,CurrentContext.OpenGLLinux.X11Window,NULL);
| ^~~~~~~~~~~~~~
| glXGetCurrentContext
CGLXManager.cpp: At global scope:
CGLXManager.cpp:302:6: error: ‘CGLXManager’ has not been declared
302 | void CGLXManager::destroySurface()
| ^~~~~~~~~~~
CGLXManager.cpp: In function ‘void irr::destroySurface()’:
CGLXManager.cpp:304:6: error: ‘GlxWin’ was not declared in this scope
304 | if (GlxWin)
| ^~~~~~
CGLXManager.cpp:305:30: error: ‘CurrentContext’ was not declared in this scope; did you mean ‘glXGetCurrentContext’?
305 | glXDestroyWindow((Display*)CurrentContext.OpenGLLinux.X11Display, GlxWin);
| ^~~~~~~~~~~~~~
| glXGetCurrentContext
CGLXManager.cpp: At global scope:
CGLXManager.cpp:308:6: error: ‘CGLXManager’ has not been declared
308 | bool CGLXManager::generateContext()
| ^~~~~~~~~~~
CGLXManager.cpp: In function ‘bool irr::generateContext()’:
CGLXManager.cpp:312:6: error: ‘glxFBConfig’ was not declared in this scope; did you mean ‘GLXFBConfig’?
312 | if (glxFBConfig)
| ^~~~~~~~~~~
| GLXFBConfig
CGLXManager.cpp:314:7: error: ‘GlxWin’ was not declared in this scope
314 | if (GlxWin)
| ^~~~~~
CGLXManager.cpp:317:44: error: ‘CurrentContext’ was not declared in this scope
317 | context = glXCreateNewContext((Display*)CurrentContext.OpenGLLinux.X11Display, (GLXFBConfig)glxFBConfig, GLX_RGBA_TYPE, NULL, True);
| ^~~~~~~~~~~~~~
CGLXManager.cpp:332:40: error: ‘CurrentContext’ was not declared in this scope
332 | context = glXCreateContext((Display*)CurrentContext.OpenGLLinux.X11Display, VisualInfo, NULL, True);
| ^~~~~~~~~~~~~~
CGLXManager.cpp:332:79: error: ‘VisualInfo’ was not declared in this scope; did you mean ‘XVisualInfo’?
332 | context = glXCreateContext((Display*)CurrentContext.OpenGLLinux.X11Display, VisualInfo, NULL, True);
| ^~~~~~~~~~
| XVisualInfo
CGLXManager.cpp:339:2: error: ‘CurrentContext’ was not declared in this scope
339 | CurrentContext.OpenGLLinux.X11Context=context;
| ^~~~~~~~~~~~~~
CGLXManager.cpp: At global scope:
CGLXManager.cpp:343:7: error: ‘SExposedVideoData’ does not name a type
343 | const SExposedVideoData& CGLXManager::getContext() const
| ^~~~~~~~~~~~~~~~~
CGLXManager.cpp:348:6: error: ‘CGLXManager’ has not been declared
348 | bool CGLXManager::activateContext(const SExposedVideoData& videoData, bool restorePrimaryOnZero)
| ^~~~~~~~~~~
CGLXManager.cpp:348:41: error: ‘SExposedVideoData’ does not name a type
348 | bool CGLXManager::activateContext(const SExposedVideoData& videoData, bool restorePrimaryOnZero)
| ^~~~~~~~~~~~~~~~~
CGLXManager.cpp: In function ‘bool irr::activateContext(const int&, bool)’:
CGLXManager.cpp:352:16: error: request for member ‘OpenGLLinux’ in ‘videoData’, which is of non-class type ‘const int’
352 | if (videoData.OpenGLLinux.X11Window)
| ^~~~~~~~~~~
CGLXManager.cpp:354:17: error: request for member ‘OpenGLLinux’ in ‘videoData’, which is of non-class type ‘const int’
354 | if (videoData.OpenGLLinux.X11Display && videoData.OpenGLLinux.X11Context)
| ^~~~~~~~~~~
CGLXManager.cpp:354:53: error: request for member ‘OpenGLLinux’ in ‘videoData’, which is of non-class type ‘const int’
354 | if (videoData.OpenGLLinux.X11Display && videoData.OpenGLLinux.X11Context)
| ^~~~~~~~~~~
CGLXManager.cpp:356:44: error: request for member ‘OpenGLLinux’ in ‘videoData’, which is of non-class type ‘const int’
356 | if (!glXMakeCurrent((Display*)videoData.OpenGLLinux.X11Display, videoData.OpenGLLinux.X11Window, (GLXContext)videoData.OpenGLLinux.X11Context))
| ^~~~~~~~~~~
CGLXManager.cpp:356:78: error: request for member ‘OpenGLLinux’ in ‘videoData’, which is of non-class type ‘const int’
356 | if (!glXMakeCurrent((Display*)videoData.OpenGLLinux.X11Display, videoData.OpenGLLinux.X11Window, (GLXContext)videoData.OpenGLLinux.X11Context))
| ^~~~~~~~~~~
CGLXManager.cpp:356:123: error: request for member ‘OpenGLLinux’ in ‘videoData’, which is of non-class type ‘const int’
356 | if (!glXMakeCurrent((Display*)videoData.OpenGLLinux.X11Display, videoData.OpenGLLinux.X11Window, (GLXContext)videoData.OpenGLLinux.X11Context))
| ^~~~~~~~~~~
CGLXManager.cpp:363:5: error: ‘CurrentContext’ was not declared in this scope
363 | CurrentContext.OpenGLLinux.X11Window = videoData.OpenGLLinux.X11Window;
| ^~~~~~~~~~~~~~
CGLXManager.cpp:363:54: error: request for member ‘OpenGLLinux’ in ‘videoData’, which is of non-class type ‘const int’
363 | CurrentContext.OpenGLLinux.X11Window = videoData.OpenGLLinux.X11Window;
| ^~~~~~~~~~~
CGLXManager.cpp:364:55: error: request for member ‘OpenGLLinux’ in ‘videoData’, which is of non-class type ‘const int’
364 | CurrentContext.OpenGLLinux.X11Display = videoData.OpenGLLinux.X11Display;
| ^~~~~~~~~~~
CGLXManager.cpp:370:34: error: ‘PrimaryContext’ was not declared in this scope
370 | if (!glXMakeCurrent((Display*)PrimaryContext.OpenGLLinux.X11Display, videoData.OpenGLLinux.X11Window, (GLXContext)PrimaryContext.OpenGLLinux.X11Context))
| ^~~~~~~~~~~~~~
CGLXManager.cpp:370:83: error: request for member ‘OpenGLLinux’ in ‘videoData’, which is of non-class type ‘const int’
370 | if (!glXMakeCurrent((Display*)PrimaryContext.OpenGLLinux.X11Display, videoData.OpenGLLinux.X11Window, (GLXContext)PrimaryContext.OpenGLLinux.X11Context))
| ^~~~~~~~~~~
CGLXManager.cpp:377:5: error: ‘CurrentContext’ was not declared in this scope
377 | CurrentContext.OpenGLLinux.X11Window = videoData.OpenGLLinux.X11Window;
| ^~~~~~~~~~~~~~
CGLXManager.cpp:377:54: error: request for member ‘OpenGLLinux’ in ‘videoData’, which is of non-class type ‘const int’
377 | CurrentContext.OpenGLLinux.X11Window = videoData.OpenGLLinux.X11Window;
| ^~~~~~~~~~~
CGLXManager.cpp:382:47: error: request for member ‘OpenGLLinux’ in ‘videoData’, which is of non-class type ‘const int’
382 | else if (!restorePrimaryOnZero && !videoData.OpenGLLinux.X11Window && !videoData.OpenGLLinux.X11Display)
| ^~~~~~~~~~~
CGLXManager.cpp:382:83: error: request for member ‘OpenGLLinux’ in ‘videoData’, which is of non-class type ‘const int’
382 | else if (!restorePrimaryOnZero && !videoData.OpenGLLinux.X11Window && !videoData.OpenGLLinux.X11Display)
| ^~~~~~~~~~~
CGLXManager.cpp:384:33: error: ‘PrimaryContext’ was not declared in this scope
384 | if (!glXMakeCurrent((Display*)PrimaryContext.OpenGLLinux.X11Display, None, NULL))
| ^~~~~~~~~~~~~~
CGLXManager.cpp:389:3: error: ‘CurrentContext’ was not declared in this scope
389 | CurrentContext.OpenGLLinux.X11Window = 0;
| ^~~~~~~~~~~~~~
CGLXManager.cpp:393:11: error: ‘CurrentContext’ was not declared in this scope
393 | else if (CurrentContext.OpenGLLinux.X11Display != PrimaryContext.OpenGLLinux.X11Display)
| ^~~~~~~~~~~~~~
CGLXManager.cpp:393:52: error: ‘PrimaryContext’ was not declared in this scope
393 | else if (CurrentContext.OpenGLLinux.X11Display != PrimaryContext.OpenGLLinux.X11Display)
| ^~~~~~~~~~~~~~
CGLXManager.cpp: At global scope:
CGLXManager.cpp:408:6: error: ‘CGLXManager’ has not been declared
408 | void CGLXManager::destroyContext()
| ^~~~~~~~~~~
CGLXManager.cpp: In function ‘void irr::destroyContext()’:
CGLXManager.cpp:410:6: error: ‘CurrentContext’ was not declared in this scope
410 | if (CurrentContext.OpenGLLinux.X11Context)
| ^~~~~~~~~~~~~~
CGLXManager.cpp:412:7: error: ‘GlxWin’ was not declared in this scope
412 | if (GlxWin)
| ^~~~~~
CGLXManager.cpp: At global scope:
CGLXManager.cpp:426:6: error: ‘CGLXManager’ has not been declared
426 | bool CGLXManager::swapBuffers()
| ^~~~~~~~~~~
CGLXManager.cpp: In function ‘bool irr::swapBuffers()’:
CGLXManager.cpp:428:27: error: ‘CurrentContext’ was not declared in this scope
428 | glXSwapBuffers((Display*)CurrentContext.OpenGLLinux.X11Display, CurrentContext.OpenGLLinux.X11Window);
| ^~~~~~~~~~~~~~
CGLXManager.cpp: At global scope:
CGLXManager.cpp:433:1: error: expected declaration before ‘}’ token
433 | }
| ^
make: *** [<builtin>: CGLXManager.o] Error 1
Code: Select all
grep ^CGLXManager\.cpp\:[0-9] output.txt|grep -i error|cut -d\ -f-1|rev|cut -d\: -f3-|rev|sort -V|uniq
Code: Select all
CGLXManager.cpp:69
CGLXManager.cpp:91
CGLXManager.cpp:96
CGLXManager.cpp:132
CGLXManager.cpp:166
CGLXManager.cpp:255
CGLXManager.cpp:259
CGLXManager.cpp:263
CGLXManager.cpp:266
CGLXManager.cpp:269
CGLXManager.cpp:272
CGLXManager.cpp:273
CGLXManager.cpp:281
CGLXManager.cpp:283
CGLXManager.cpp:286
CGLXManager.cpp:288
CGLXManager.cpp:290
CGLXManager.cpp:302
CGLXManager.cpp:304
CGLXManager.cpp:305
CGLXManager.cpp:308
CGLXManager.cpp:312
CGLXManager.cpp:314
CGLXManager.cpp:317
CGLXManager.cpp:332
CGLXManager.cpp:339
CGLXManager.cpp:343
CGLXManager.cpp:348
CGLXManager.cpp:352
CGLXManager.cpp:354
CGLXManager.cpp:356
CGLXManager.cpp:363
CGLXManager.cpp:364
CGLXManager.cpp:370
CGLXManager.cpp:377
CGLXManager.cpp:382
CGLXManager.cpp:384
CGLXManager.cpp:389
CGLXManager.cpp:393
CGLXManager.cpp:408
CGLXManager.cpp:410
CGLXManager.cpp:412
CGLXManager.cpp:426
CGLXManager.cpp:428
CGLXManager.cpp:433
Сделано в СССР
OS: Ubuntu Linux 22.04 LTS 64 bit
Motherboard: ASUS P5G41-M LE
CPU: Intel Pentium Dual-Core E6300 @ 2.80GHz
RAM: DDR2 @ 8G
GPU: NVIDIA GeForce GT 710 @ 2G (Driver version: 470)
OS: Ubuntu Linux 22.04 LTS 64 bit
Motherboard: ASUS P5G41-M LE
CPU: Intel Pentium Dual-Core E6300 @ 2.80GHz
RAM: DDR2 @ 8G
GPU: NVIDIA GeForce GT 710 @ 2G (Driver version: 470)
Re: Irrlicht unit tests
Thank you. It's just the first error that matters - if it goes in there that means GLX_VERSION_1_4 and GLX_SAMPLE_BUFFERS are both set. Which is more or less the standard, so unfortunately not giving much of a hint yet where the bug comes from.
I think it somehow has to do with AntiAlias being set to 2 in SIrrlichtCreationParameters. But no clue yet why.
I think it somehow has to do with AntiAlias being set to 2 in SIrrlichtCreationParameters. But no clue yet why.
IRC: #irrlicht on irc.libera.chat
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Re: Irrlicht unit tests
Maybe we should make certain first that's the problem - can you add the following line to exampe 12 (TerrainRendering) before createDeviceEx:
Just to see if it shows the same bug - the screen suddenly rendered differen. Like if you rendered only it's left side and then stretched that again to full window.
Code: Select all
params.AntiAlias = 2;
IRC: #irrlicht on irc.libera.chat
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Re: Irrlicht unit tests
Not sure if it is antialiasing or not with the change, the change is minimal, compare tool not showing much, does not appear only one side is affected.
I've also recorded a video, I don't see many antialiasing artifacts, link https://youtu.be/VAX13uNGgYM (youtube compression might affect the quality, original [link removed (file deleted from my server)])
I've also recorded a video, I don't see many antialiasing artifacts, link https://youtu.be/VAX13uNGgYM (youtube compression might affect the quality, original [link removed (file deleted from my server)])
Last edited by juozas on Mon May 23, 2022 8:23 pm, edited 2 times in total.
Сделано в СССР
OS: Ubuntu Linux 22.04 LTS 64 bit
Motherboard: ASUS P5G41-M LE
CPU: Intel Pentium Dual-Core E6300 @ 2.80GHz
RAM: DDR2 @ 8G
GPU: NVIDIA GeForce GT 710 @ 2G (Driver version: 470)
OS: Ubuntu Linux 22.04 LTS 64 bit
Motherboard: ASUS P5G41-M LE
CPU: Intel Pentium Dual-Core E6300 @ 2.80GHz
RAM: DDR2 @ 8G
GPU: NVIDIA GeForce GT 710 @ 2G (Driver version: 470)
Re: Irrlicht unit tests
Thanks. It would be very visible if it's like test-results (you can compare the error screenshots in tests/results with the one with the same name in tests/media then you see how different they are. That's basically what most of our tests do - they use the media files as reference images and compare how different current results in the engine are to those).
I got another idea (maybe screenshot function is affected), but have to write some test-code for that first.
I got another idea (maybe screenshot function is affected), but have to write some test-code for that first.
IRC: #irrlicht on irc.libera.chat
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Re: Irrlicht unit tests
OK, I've modified the screenshot test in svn trunk. My hope is that the new OpenGL-shotsInShots2.png will also fail now in your case. And if so would be great if you could post the result again.
IRC: #irrlicht on irc.libera.chat
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Re: Irrlicht unit tests
Surely screenshot test fails for me too. Image:
Сделано в СССР
OS: Ubuntu Linux 22.04 LTS 64 bit
Motherboard: ASUS P5G41-M LE
CPU: Intel Pentium Dual-Core E6300 @ 2.80GHz
RAM: DDR2 @ 8G
GPU: NVIDIA GeForce GT 710 @ 2G (Driver version: 470)
OS: Ubuntu Linux 22.04 LTS 64 bit
Motherboard: ASUS P5G41-M LE
CPU: Intel Pentium Dual-Core E6300 @ 2.80GHz
RAM: DDR2 @ 8G
GPU: NVIDIA GeForce GT 710 @ 2G (Driver version: 470)
Re: Irrlicht unit tests
OK, so if OpenGL-shotsInShots0.png work that means we know now for certain it's related to the AntiAlias setting (only difference between those 2 tests).
Now I'd like to make sure it's happening only in screenshot in not in rendering.
Can you run the following (just copy the code over any of the examples) and send me a screenshot of how the rendered window looks like?
Now I'd like to make sure it's happening only in screenshot in not in rendering.
Can you run the following (just copy the code over any of the examples) and send me a screenshot of how the rendered window looks like?
Code: Select all
#include <irrlicht.h>
#include <iostream>
using namespace irr;
#ifdef _MSC_VER
#pragma comment(lib, "Irrlicht.lib")
#endif
// render some recognizable stuff
static void drawSomeStuff(video::IVideoDriver* driver)
{
driver->draw2DRectangle(core::recti(5,5,155,115),
video::SColor(255, 100, 0, 0),
video::SColor(255, 0, 200, 0),
video::SColor(255, 0, 0, 200),
video::SColor(255, 20, 150, 150));
driver->draw2DLine(core::position2di(10,10), core::position2di(150,110), video::SColor(255,250,50,0));
driver->draw2DLine(core::position2di(0,120), core::position2di(80,60), video::SColor(255,50,50,250));
}
int main()
{
SIrrlichtCreationParameters params;
params.AntiAlias = 2;
params.WindowSize = core::dimension2du(160, 120);
params.DriverType = video::EDT_OPENGL;
IrrlichtDevice *device = createDeviceEx(params);
if (!device)
return 0;
video::IVideoDriver* driver = device->getVideoDriver();
device->run();
driver->beginScene(video::ECBF_COLOR | video::ECBF_DEPTH, video::SColor(255,100,101,140));
drawSomeStuff(driver);
driver->endScene();
video::IImage* img = driver->createScreenShot();
if ( img )
{
std::cout << video::ColorFormatNames[driver->getColorFormat()];
video::ITexture * screenshot = driver->addTexture(io::path("firstScreenshot"), img);
while(device->run())
{
driver->beginScene(video::ECBF_COLOR | video::ECBF_DEPTH, video::SColor(255,100,101,140));
drawSomeStuff(driver);
driver->draw2DImage(screenshot, core::recti(0, 30, 80, 90), core::recti(screenshot->getOriginalSize()), 0, 0, 0);
driver->endScene();
}
img->drop();
}
device->closeDevice();
device->drop();
return 0;
}
IRC: #irrlicht on irc.libera.chat
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Re: Irrlicht unit tests
I copied HelloWorld example folder and made sure it writes exacutable as different name and replaced main.cpp with your code. After compiling and running I found that rendering might not be correct but I'm not sure if realy it is. The overayed image is stretched and wrongly positioned, compared to image on background, and appears different from what is shown in media/OpenGL-shotsInShots2.png file. Screenshot including window decorations:
Сделано в СССР
OS: Ubuntu Linux 22.04 LTS 64 bit
Motherboard: ASUS P5G41-M LE
CPU: Intel Pentium Dual-Core E6300 @ 2.80GHz
RAM: DDR2 @ 8G
GPU: NVIDIA GeForce GT 710 @ 2G (Driver version: 470)
OS: Ubuntu Linux 22.04 LTS 64 bit
Motherboard: ASUS P5G41-M LE
CPU: Intel Pentium Dual-Core E6300 @ 2.80GHz
RAM: DDR2 @ 8G
GPU: NVIDIA GeForce GT 710 @ 2G (Driver version: 470)
Re: Irrlicht unit tests
Thank you. That's exactly what I hoped to see. It renders correct - but the screenshot is taken wrong. In the test-case above it was using 2 times screenshots, so both were wrong. In that new code only the small one is screenshot while the big background is real rendering.
Couldn't completely automate that test as I needed you to take a manual screenshot if the screenshot function itself messes up ;-)
Now to figure out _why_ it happens... my first guess something about it using the wrong screenbuffer for some reason (antialiasing might render twice the size and scale down to antialias which might somehow mess this up). But at least I know where to look now.
Couldn't completely automate that test as I needed you to take a manual screenshot if the screenshot function itself messes up ;-)
Now to figure out _why_ it happens... my first guess something about it using the wrong screenbuffer for some reason (antialiasing might render twice the size and scale down to antialias which might somehow mess this up). But at least I know where to look now.
IRC: #irrlicht on irc.libera.chat
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Re: Irrlicht unit tests
Sorry, I could use another bit of information. It would be useful to know which color format your driver is running.
I've changed the example code above slights (adding iostream and a std::cout call). Could you please run the new one and tell me about the last line you'll get on console (something like "R8G8B8")?
edit: OK, not necessary. Seems it's always R8G8B8 in OpenGL and not used for anything besides getting a screenshot either.
I've changed the example code above slights (adding iostream and a std::cout call). Could you please run the new one and tell me about the last line you'll get on console (something like "R8G8B8")?
edit: OK, not necessary. Seems it's always R8G8B8 in OpenGL and not used for anything besides getting a screenshot either.
IRC: #irrlicht on irc.libera.chat
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm
Code snippet repository: https://github.com/mzeilfelder/irr-playground-micha
Free racer made with Irrlicht: http://www.irrgheist.com/hcraftsource.htm