Hi, all! I just started to learn SFML and I got a SegFault when trying to run this little mandelbrot sample program (https://github.com/maxmmyron/mandelbrot-visualizer/blob/master/Fractal/main.cpp).
It runs well on my friend's PC (nVidia graphics) but not on my laptop (Intel graphics).
My specs:
- Windows 7 x64 SP1
- Intel (GMA) 4500MHD adapter with the latest available driver (8.15.10.2869), OpenGL 2.1 and GL_EXT_framebuffer_object support (reported by OpenGL Extensions Viewer)
- Code::Blocks 20.03 with MinGW-64-GCC-8.10
- SFML (Dev snapshot, windows-gcc-810-mingw-64.zip, 2022-Jan-07)
Stack trace:
main.cpp:
// Line 43
mandelTexture = mandelbrot(width, height, oxmin, oxmax, oymin, oymax, 100);
mandelbrot func works ok and returns its value and we go to the operator= of the Texture class:
Texture.cpp:
// Line 816
Texture& Texture::operator =(const Texture& right)
// Line 818
Texture temp(right);
then to the copy constructor:
Texture.cpp:
// Line 83
Texture::Texture(const Texture& copy) :
// Line 99
update(copy);
then to the update func:
Texture.cpp:
// Line 439
void Texture::update(const Texture& texture)
// Line 441
// Update the whole texture
// Line 442
update(texture, {0, 0});
and another update:
Texture.cpp:
// Line 447
void Texture::update(const Texture& texture, const Vector2u& dest)
// Line 455
#ifndef SFML_OPENGL_ES
// Line 487
// Link the destination texture to the destination frame buffer
// Line 488
glCheck(GLEXT_glBindFramebuffer(GLEXT_GL_DRAW_FRAMEBUFFER, destFrameBuffer));
// Line 489
glCheck(GLEXT_glFramebufferTexture2D(GLEXT_GL_DRAW_FRAMEBUFFER, GLEXT_GL_COLOR_ATTACHMENT0, GL_TEXTURE_2D, m_texture, 0));
and I got a SegFault at line 489 :'(
I'm not an OpenGL guru, but it looks like glFramebufferTexture2D is not supported by OpenGL 2.1:
Khronos docs (https://www.khronos.org/registry/OpenGL-Refpages/gl4/html/glFramebufferTexture.xhtml):
(https://i.imgur.com/p94ZopM.png)
SFML\Graphics\GLExtensions.hpp:
// Line 262
// Core since 3.0 - EXT_framebuffer_object
// Line 272
#define GLEXT_glFramebufferTexture2D glFramebufferTexture2DEXT
So, does SFML require OpenGL 3.0? If no and if we have 2.1 in the ContextSettings, why does Texture::update() call the unsupported function?