- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我目前正在学习 SDL2,并且刚刚设法创建了一个乒乓球游戏。一些 friend 告诉我,我应该开始使用类来管理,例如 player1 和 player2。我知道如何创建一个类,但我不明白如何在类之间传递 SDL_Renderer 以便将对象从类内渲染到 main.cpp 文件。
#include "SDL2/SDL.h"
#include "SDL2/SDL_render.h"
#include <iostream>
#include <windows.h>
#include <thread>
#include "player.h"
Player Player; //defining the class
const int WINDOW_WIDTH = 1280;
const int WINDOW_HEIGHT = 720;
int main(int argc, char *args[]) {
SDL_Init(SDL_INIT_EVERYTHING);
SDL_Window *window;
SDL_Renderer *renderer;
window = SDL_CreateWindow ("Test",
SDL_WINDOWPOS_CENTERED,
SDL_WINDOWPOS_CENTERED,
WINDOW_WIDTH,
WINDOW_HEIGHT,
0
);
if (window == NULL) {
std::cout << "Window could not load" << SDL_GetError() << std::endl;
return 0;
}
renderer = SDL_CreateRenderer(window, -1, SDL_RENDERER_ACCELERATED);
while (running) //running is a bool (true) {
Player.draw();
}
SDL_DestroyWindow(window);
SDL_Quit();
return 0;
}
为了在屏幕上绘制对象,我必须在我的 player.cpp 绘制函数中做什么?
使用 C++ 窗口,使用 g++ main.cpp player.cpp -o main.exe -IC:\MinGW\i686-w64-mingw32\include -LC:\MinGW\i686-w64-mingw32 编译代码\lib -lmingw32 -lSDL2main -lSDL2
最佳答案
在 main.cpp 中
Player.draw(renderer)
(假设您使用与上面相同的代码,只需将“renderer”传递给 Player.draw() 函数即可。)
在player.h中
class Player {
public:
void draw(SDL_Renderer *renderer)
};
在 player.cpp 中
void Player::draw(SDL_Renderer *renderer) {
SDL_Rect object;
object.x = 0;
object.y = 0;
object.h = 10;
object.w = 10;
SDL_SetRenderDrawColor(renderer, 255, 255, 255, 255);
SDL_RenderDrawRect(renderer, &object);
SDL_RenderFillRect(renderer, &object);
}
// will draw a white box with at position (0,0)
我相信这是一个简单的方法来做到这一点
关于C++将SDL_renderer传递给一个类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49873362/
我正在使用 SDL2。我希望能够使用成员函数访问私有(private)成员 _renderer。 相关代码如下: Graphics.h #ifndef GRAPHICS_H #define GRAPH
我正在尝试制作一个以曲棍球场为背景的 2D 游戏。错误处理程序表示渲染器未初始化,因此纹理未初始化。我知道 BMP 加载,因为我没有收到错误。不用担心相机的东西。背景应该滚动。我只需要渲染背景。代码可
我想用 SDL2 和 C 编写一个游戏。 但我不知道当角色移动时如何更新他。 我尝试使用下面的代码更新它。 但问题是它删除了所有内容,包括角色以及渲染器的所有内容。 而且,如果我不添加SDL_Rend
我有全局 SDL_Renderer*,它在函数调用内。 我已经将我的程序简化为这个 MWE,并且问题仍然可以重现。在 GDB 中,您可以在函数和主堆栈帧之间切换,并将变量视为指向 2 个不同的位置。
我从 SDL2 开始,在尝试将 SDL_renderer 转换为 SDL_window 时遇到了一些问题。如何准确地将 SDL_rnderer 转换为 SDL_window? 最佳答案 你不能,它们是
我试图在两个单独的 SDL_Renderer* 上使用相同的 SDL_Texture*,但显然 SDL_Texture 似乎“绑定(bind)”到 SDL_Renderer*。 有没有办法让第二个渲染
我有一个 sprite 类,它使用 SDL_Texture 而不是 SDL_Surface 来代替性能。该类看起来像这样: class Sprite { public: ...
我正在使用 SDL2 制作游戏,不久游戏就占用了过多的 RAM,甚至无法关闭。我剥离了代码,发现即使是这个毫无意义的文件程序也会占用我 100% 的 CPU 和一大块 RAM。 #include "S
我学习 SDL 二维编程已有一段时间了,现在我想创建一个结合使用 SDL 和 OpenGL 的程序。我是这样设置的: SDL_Init(SDL_INIT_VIDEO); window = SDL_Cr
我是一名优秀的程序员,十分优秀!