glDrawPixels访问违规读取位置
glDrawPixels Access violation reading location
我正在尝试使用OpenGL函数glDrawPixels()
渲染体积数据
#define SIZE 480
unsigned int rgbPixels[SIZE][SIZE]
...
glDrawPixels(SIZE, SIZE, GL_RGB, GL_UNSIGNED_INT, rgbPixels);
如果我执行sizeof(rgbpixels)
,它返回921600,也就是480*480*4。
我试过GL_RGBA
,但没有效果。最后,我在屏幕上得到了一些东西,而没有使用glDrawPixels(SIZE, SIZE*0.81, GL_RGB, GL_UNSIGNED_INT, rgbPixels);
但它不是按照我的预期输出。有人能帮帮我吗?
您告诉glDrawPixels
您的数据是SIZExSIZE
像素,每个像素有3个32位无符号整数类型的组件(GL_RGB
)每个 (GL_UNSIGNED_INT
)。如果rgbPixels
不是这种情况(当您说它只是SIZE*SIZE*4
而不是所需的SIZE*SIZE*3*4
时可能不是这样),那么这可能会导致访问冲突或其他未定义的行为。
当你说你的rgbPixels
的大小是SIZE*SIZE*4
,那么我猜每个像素包含4个字节,每个单独的字节是一个颜色组件。如果是这种情况,则需要
glDrawPixels(SIZE, SIZE, GL_RGBA, GL_UNSIGNED_BYTE, rgbPixels);
始终记住glDrawPixels
的所有参数告诉OpenGL指针参数(rgbPixels
)使用多少内存以及它以哪种格式布局。所以这些当然必须与rgbPixels
包含(或指向)的实际内存相匹配。
给定OpenGL将期望每像素3个无符号整数!您可能希望使用GL_UNSIGNED_INT_8_8_8_8
作为数据类型。
相关文章:
- 0xC0000005:访问冲突读取位置 0x00000000. 重载 == 运算符的问题
- (此函数用于计算 SMA).在 FA.exe 中0x00509159引发异常: 0xC0000005:访问冲突读取位置0
- 0xC0000005:读取位置0xCDCDCDC1时发生访问冲突
- 0xC0000005:读取位置0xCDCDCDCD时发生访问冲突
- 0x0F50DF58:0xC0000005:访问冲突读取位置0x0047CA04时未处理的异常
- 在 DLL 中嵌入 Python:Py_DECREF列表对象时访问冲突读取位置
- 0xC0000005:访问冲突读取位置0x0000000000000008
- C++访问冲突读取位置0xDDDDDDCD当我尝试删除已更新的数组时
- 使用向量的函数崩溃,调试器说访问冲突读取位置
- OPENCV.3.0错误:0xc0000005:访问违规读取位置0x00000000
- 访问违规读取位置传递指针以在c中写入的DLL中起作用
- vc++ 访问冲突读取位置
- C++ - 智能指针 - 访问冲突读取位置0xDDDDDDDD
- C++访问冲突读取位置错误
- 访问违规读取位置和错误读取字符串的错误
- C 访问违规读取位置0xcccccccccccccccccccc和卡对象
- C++ 访问向量动态数组中的违规读取位置0xFFFFFFFFFFFFFFFF
- 0xC0000005:访问冲突读取位置0x0000000000000000.C++
- CUDA:访问违规读取位置
- OpenGL:glDrawArrays()引发异常(nvoglv32.dll)读取位置0x00000000时发生访问冲突