SDL不绘制图像
SDL Not Drawing Image
我目前使用SDL绘制图像到屏幕上,它加载图像没有错误。但是当我在屏幕上绘制图像时,什么也没有显示出来。下面是我的代码:
图片加载功能:
SDL_Surface *d2Sprite::Load(char *file)
{
SDL_Surface *temp = NULL;
SDL_Surface *opt = NULL;
if((temp = SDL_LoadBMP(file)) == NULL)
{
cout << "Unable to load image '" << file << "'. " << SDL_GetError() << endl;
return NULL;
}
opt = SDL_DisplayFormatAlpha(temp);
SDL_FreeSurface(temp);
return opt;
}
绘图功能:
bool d2Sprite::Draw(SDL_Surface *dest, SDL_Surface *src, int x, int y)
{
if(dest == NULL || src == NULL)
{
cout << "Unable draw sprite! " << SDL_GetError() << endl;
return false;
}
SDL_Rect destR;
destR.x = x;
destR.y = y;
SDL_BlitSurface(src, NULL, dest, &destR);
return true;
}
您没有设置用于比特化的矩形的宽度和高度,destR
。
你应该检查blir操作的返回值来判断它是否成功。
同样,你可能会遇到alpha混合的问题,因为你为表面启用了alpha,但在此之前没有设置它。参考SDL_BlitSurface()
文档
是否在调用Draw()之后调用SDL_Flip() ?您需要它来翻转后缓冲区(发生比特化的地方)和前缓冲区(屏幕上显示的内容)。
相关文章:
- 如何在 direct2d 中使用随其窗口重新缩放的效果绘制图像
- 获取位于安卓工作室中可绘制的图像的绝对路径,用于NDK项目
- Opencv,在图像中的对象周围绘制一个框
- 为什么在开始绘制获取的交换链图像时不需要内存障碍?
- OPENCV C .在for循环中在不同的图像像素上绘制一个圆圈(应在每个循环运行时将图像打开)
- 如何在圆圈内绘制图像
- 在绘制信号上保留绘图区域"图像"
- 如何使用GLADE和GTKMM C 重新绘制GTK ::图像组件
- 过剩无法绘制 2D 图像
- 尝试递归地重新绘制所有图像像素
- 从C 中的文件中读取图像,然后传递到Libharu的绘制方法
- SDL 不绘制图像
- 如何使用QGraphicsItem绘制图像?
- 绘制太大的图像无法适应Qimage
- 图像绘制使用NDK显示轮廓
- 打开不同的图像文件,并使用GDI 库在主应用程序窗口的背景上绘制它们
- 在灰度 (B/W) 图像上绘制彩色点
- 使用图像指针绘制图像
- QPixmap将绘制的正方形的内容复制到另一个图像中
- OpenCV将透明图像绘制到另一个图像上