我在c++上用SetPixel做了一个程序:
先声明一个三维数组screen[x][y][3]=0,并用这个数组和SetPixel做了一个在控制台上输出数组对应颜色的程序。但SetPixel效率太低,我想做到像视频一样一帧一帧播放的效果
求解决方案!
有什么函数能替代SetPixel?
- 写回答
- 好问题 0 提建议
- 追加酬金
- 关注问题
- 邀请回答
-
3条回答 默认 最新
- H3T 2023-04-08 22:06关注
用图形库OpenGL 或 DirectX来实现吧。
SetPixe函数用的是软件渲染,效率比较低。示例:
#include <GL/glew.h> #include <GL/freeglut.h> int screen[800][600][3] = {}; // 三维数组,保存每个像素的颜色值 void display() { glClear(GL_COLOR_BUFFER_BIT); // 清空窗口 glBegin(GL_POINTS); // 开始绘制点 for (int x = 0; x < 800; x++) { for (int y = 0; y < 600; y++) { glColor3ub(screen[x][y][0], screen[x][y][1], screen[x][y][2]); // 设置点的颜色 glVertex2i(x, y); // 设置点的坐标 } } glEnd(); // 结束绘制点 glFlush(); // 刷新窗口 } int main(int argc, char** argv) { glutInit(&argc, argv); // 初始化OpenGL库和窗口系统 glutInitDisplayMode(GLUT_SINGLE | GLUT_RGB); // 设置窗口显示模式 glutInitWindowSize(800, 600); // 设置窗口大小 glutCreateWindow("My Screen"); // 创建窗口 glMatrixMode(GL_PROJECTION); // 设置投影矩阵 glLoadIdentity(); glOrtho(0, 800, 0, 600, -1, 1); glMatrixMode(GL_MODELVIEW); // 设置模型视图矩阵 glLoadIdentity(); glutDisplayFunc(display); // 注册窗口显示回调函数 glutMainLoop(); // 进入事件循环 return 0; }
如果答案对您有所帮助,望采纳。解决 1无用
悬赏问题
- ¥15 模电中二极管,三极管和电容的应用
- ¥15 关于模型导入UNITY的.FBX: Check external application preferences.警告。
- ¥15 气象网格数据与卫星轨道数据如何匹配
- ¥100 java ee ssm项目 悬赏,感兴趣直接联系我
- ¥15 微软账户问题不小心注销了好像
- ¥15 x264库中预测模式字IPM、运动向量差MVD、量化后的DCT系数的位置
- ¥15 curl 命令调用正常,程序调用报 java.net.ConnectException: connection refused
- ¥20 关于web前端如何播放二次加密m3u8视频的问题
- ¥15 使用百度地图api 位置函数报错?
- ¥15 metamask如何添加TRON自定义网络