小编Vik*_*tor的帖子

SDL2 /表面/纹理/渲染

我正在努力学习SDL2.旧SDL和SDL2之间的主要区别(我可以看到)是旧的SDL具有由其表面表示的窗口,所有图片都是表面,所有图像操作和blits是表面到表面.在SDL2中,我们有表面和纹理.如果我做对了,表面在RAM中,纹理在图形内存中.是对的吗?

我的目标是为SDL2制作面向对象的包装器,因为我对SDL有类似的东西.我想拥有类窗口和类图片(具有私有纹理和表面).窗口将使其内容由图片类的实例表示,并且所有blits将是图片到图片对象的blits.如何组织这些图片操作:

  1. 像素操作应该在表面上?
  2. 如果我想将一张图片的一部分复制到另一张而不渲染它,它应该在表面上?
  3. 只有当我想在屏幕上渲染时,我才能将表面blit到纹理?
  4. 是将它全部渲染到一个表面然后将其渲染到窗口纹理还是将每个图片分别渲染到窗口纹理?

一般来说,什么时候应该使用表面?什么时候应该使用纹理?

感谢您的时间,欢迎所有的帮助和建议:)

graphics textures render sdl-2

13
推荐指数
1
解决办法
8875
查看次数

Linux/ 打开目录作为文件

我一直在阅读 Brian Kernighan 和 Dennis Ritchie - The C Programming Language 并且第 8.6 章是关于 UNIX OS 下的目录列表。他们说一切甚至目录都是一个文件。这意味着我应该能够将目录作为文件打开?我已经使用 stdio 函数尝试过它,但没有奏效。现在,我正在尝试使用 UNIX 系统功能。当然,我不是在使用 UNIX,而是在使用 Ubuntu linux。这是我的代码:

#include <syscall.h>
#include <fcntl.h>

int main(int argn, char* argv[]) {
    int fd;
    if (argn!=1) fd=open(argv[1],O_RDONLY,0);
    else fd=open(".",O_RDONLY,0);
    if (fd==-1) return -1;

    char buf[1024];
    int n;
    while ((n=read(fd,buf,1024))>0)
        write(1,buf,n);

    close (fd);
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

即使 argn 为 1(无参数)并且我正在尝试读取当前目录,这也不会写入任何内容。任何想法/解释?:)

c unix linux filesystems gnu

5
推荐指数
1
解决办法
6851
查看次数

标签 统计

c ×1

filesystems ×1

gnu ×1

graphics ×1

linux ×1

render ×1

sdl-2 ×1

textures ×1

unix ×1