OpenGL ES Emulator write fail when map GL_PIXEL_UNPACK_BUFFER in 3.2

I have a test code below:   

glGenBuffers(1, &buf);
glBindBuffer(GL_PIXEL_UNPACK_BUFFER, buf);
check_error(__FILE__, __LINE__);
glBufferData(GL_PIXEL_UNPACK_BUFFER, render_width * render_height*4, yuvdata, GL_STREAM_DRAW);
check_error(__FILE__, __LINE__);
GLubyte* ptr = (GLubyte*)glMapBufferRange(GL_PIXEL_UNPACK_BUFFER, 0, render_width * render_height * 4, GL_MAP_WRITE_BIT | GL_MAP_FLUSH_EXPLICIT_BIT );
check_error(__FILE__, __LINE__);
if (ptr)
{
	// update data directly on the mapped buffer
	updatePixels(ptr, render_width * render_height * 4);
	glUnmapBuffer(GL_PIXEL_UNPACK_BUFFER);  // release pointer to mapping buffer
}

It works well by the emulator when I chose 3.0 and 3.1.

while I change to include the gl32.h, compile is ok, but will crash because the ptr cannot write and read after map.

I don't know why. no error when check, just crash when update pixel.

Parents
  • Hi TC, 

    Without more information it's going to be hard to provide any help, but the emulator is very sensitive to the behavior and correctness of the host graphics driver (we're just translating OpenGL ES into host OpenGL calls). 

    Note that the emulator is an old product, which is not getting any further updates, so we'd recommend trying alternatives such as ANGLE.

    Kind regards, 
    Pete

Reply
  • Hi TC, 

    Without more information it's going to be hard to provide any help, but the emulator is very sensitive to the behavior and correctness of the host graphics driver (we're just translating OpenGL ES into host OpenGL calls). 

    Note that the emulator is an old product, which is not getting any further updates, so we'd recommend trying alternatives such as ANGLE.

    Kind regards, 
    Pete

Children