#include
#include
#include
#define PI 3.14159265
#define WIDTH 640
#define HEIGHT 480
void drawSineWave(SDL_Renderer* renderer) {
int x, y;
double scale = 50.0; // 缩放因子
SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255); // 设置颜色为白色
// 遍历每个像素点
for (x = 0; x < WIDTH; x++) {
// 计算正弦曲线上的点
y = (int)(HEIGHT / 2 - scale * sin((x - WIDTH / 2) * PI / 180.0));
// 绘制点
SDL_RenderDrawPoint(renderer, x, y);
}
}
int main(int argc, char* argv[]) {
if (SDL_Init(SDL_INIT_VIDEO) != 0) {
printf("SDL_Init Error: %sn", SDL_GetError());
return 1;
}
SDL_Window* win = SDL_CreateWindow("Sine Wave", 100, 100, WIDTH, HEIGHT, SDL_WINDOW_SHOWN);
if (win == NULL) {
printf("SDL_CreateWindow Error: %sn", SDL_GetError());
SDL_Quit();
return 1;
}
SDL_Renderer* renderer = SDL_CreateRenderer(win, -1, SDL_RENDERER_ACCELERATED | SDL_RENDERER_PRESENTVSYNC);
if (renderer == NULL) {
SDL_DestroyWindow(win);
printf("SDL_CreateRenderer Error: %sn", SDL_GetError());
SDL_Quit();
return 1;
}
SDL_SetRenderDrawColor(renderer, 0, 0, 0, 255); // 设置背景颜色为黑色
SDL_RenderClear(renderer);
drawSineWave(renderer);
SDL_RenderPresent(renderer);
SDL_Event e;
int quit = 0;
while (!quit) {
while (SDL_PollEvent(&e)) {
if (e.type == SDL_QUIT) {
quit = 1;
}
}
}
SDL_DestroyRenderer(renderer);
SDL_DestroyWindow(win);
SDL_Quit();
return 0;
}