gpt4 book ai didi

c++ - 如何在 SDL 2.0 中绘制像素?

转载 作者:可可西里 更新时间:2023-11-01 15:39:27 25 4
gpt4 key购买 nike

在SDL2.0中如何用像素绘图?

我正在尝试熟悉 C++,但如果没有漂亮的图片,这很难做到,所以我正在尝试运行一个非常基本的图形显示程序。我真正想让它做的就是给我一个窗口,让我在上面绘制 rgbα 像素,并访问有关这些像素的信息。可能还有其他我想要但我不知道的东西,但这就是我现在 list 上的全部内容。我对此的研究促使我尝试使用 SDL,当前版本为 2.0。

我几乎所有的图形经验都来自在 <canvas> 上使用 JavaScript .其他大部分来 self 的计算器,它有这个真的很棒Pxl-On()命令,如此简单。

如果重要的话,我正在为我的 C++ 使用 MinGW。此外,如果有比 SDL2.0 更好的东西**满足我的需要,欢迎提出建议。


**“更好”是指“包含我需要的功能,但总功能少于 SDL2.0,和/或具有比 SDL2.0 更直观/更简单的 *** API。”

*** 完成相同任务的代码行更少。

最佳答案

可运行示例

使用 SDL_RenderDrawPoint 在屏幕上逐像素绘制红色对角线。

enter image description here

主.c

#include <stdlib.h>

#include <SDL2/SDL.h>

#define WINDOW_WIDTH 600

int main(void) {
SDL_Event event;
SDL_Renderer *renderer;
SDL_Window *window;
int i;

SDL_Init(SDL_INIT_VIDEO);
SDL_CreateWindowAndRenderer(WINDOW_WIDTH, WINDOW_WIDTH, 0, &window, &renderer);
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 0);
SDL_RenderClear(renderer);
SDL_SetRenderDrawColor(renderer, 255, 0, 0, 255);
for (i = 0; i < WINDOW_WIDTH; ++i)
SDL_RenderDrawPoint(renderer, i, i);
SDL_RenderPresent(renderer);
while (1) {
if (SDL_PollEvent(&event) && event.type == SDL_QUIT)
break;
}
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(window);
SDL_Quit();
return EXIT_SUCCESS;
}

GitHub upstream .

编译运行:

gcc -std=c89 -Wextra -pedantic-errors -o main.out main.c -lSDL2
./main.out

如果你想一次设置一个大的像素矩形,例如整个屏幕或 Sprite ,使用 SDL_Texture + SDL_RenderCopy 和可能的 SDL_TEXTUREACCESS_STREAMING,因为那样会快得多。示例位于:

在 libsdl 2.0.2、Ubuntu 15.10 上测试。

关于c++ - 如何在 SDL 2.0 中绘制像素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20579658/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com