我有一个在openGL
上下文中绘制图像的功能。 (在这种情况下用于渲染到纹理)适用于整个图像,但也应该只能渲染矩形部分。如果零件具有与图像相同的宽度,则渲染零件可以工作。对于宽度小于图像数据的部件,它会失败。
这是函数(仅限于小宽度,无清理等部分)
void drawImage(uint32 imageWidth, uint32 imageHeight, uint8* pData,
uint32 offX, uint32 partWidth) // (offX+partWidth<=imageWidth)
{
uint8* p(pData);
if (partWidth != imageWidth)
{
glPixelStorei(GL_PACK_ROW_LENGTH, imageWidth);
p = calcFrom(offX, pData); // point at pixel in row
}
glDrawPixels(partWidth, ImageHeight, GL_BGRA, GL_UNSIGNED_BYTE, p);
}
如上所述:if (widthPart==imageWidth)
渲染效果很好。对于partWidth
和imageWidth
的某些组合,它也有效,但这似乎是一个非常特殊的情况,主要是宽度非常小的图像和一些特殊的partWidths
。
我没有找到这方面的例子,但从文档中我认为这可能会以某种方式做到这一点。我是否错过了解整件事,或者我只是监督了一个小坑?
谢谢, Moritz的
P.S:它正在Windows上运行 [编辑:] P.P.S:到现在为止,我已尝试将其作为纹理。如果我用glDrawPixels
替换glTexImage2D
我有同样的问题...(可以上传整个图像并仅渲染部分,但对于可能不是最佳方式的小图片的小部分... 。)
答案 0 :(得分:0)
AAArrrghh !!
GL_ 联合国 PACK_ROW_LENGTH不是GL_PACK_ROW_LENGTH !!!!