小编Jer*_*ov2的帖子

Vulkan:vk*CreateInfo结构中的sType有什么意义?

vk*CreateInfo新的Vulkan API中的所有create info structs()中,总有一个.sType成员.如果价值只能是一件事,为什么会这样?此外,Vulkan规范非常明确,您只能将vk*CreateInfo结构用作其相应vkCreate*函数的参数.这似乎有点多余.我可以看到,如果驱动程序将此结构直接传递给GPU,您可能需要它(我确实注意到它始终是第一个成员).但对于应用程序而言,这似乎是一个非常糟糕的想法,因为如果驱动程序这样做,应用程序将更不容易出错,并且在结构中添加int似乎不是一个计算效率极低的操作.我只是不明白为什么它存在.

TL; DR
    为什么vk*CreateInfo结构有.sType成员?

c specifications vulkan

23
推荐指数
1
解决办法
1607
查看次数

GLM 从 vec3 制作旋转矩阵

我正在制作一个游戏,我需要弹丸面向它的前进方向。我知道它的方向,我需要制作一个转换矩阵,使我可以将射弹模型方向 (1, 0, 0) 或正 X 轴与任何任意向量对齐。我怎么能在 glm 中做到这一点?

c++ axis matrix rotational-matrices glm-math

7
推荐指数
2
解决办法
6391
查看次数

VkApplicationInfo有什么意义?

在新的Vulkan API中,有一个结构需要创建VkInstance:VkApplicationInfo.这是定义:

typedef struct VkApplicationInfo {
    VkStructureType    sType;
    const void*        pNext;
    const char*        pApplicationName;
    uint32_t           applicationVersion;
    const char*        pEngineName;
    uint32_t           engineVersion;
    uint32_t           apiVersion;
} VkApplicationInfo;
Run Code Online (Sandbox Code Playgroud)

我认为不必传递应用程序名称,应用程序版本,引擎名称或引擎版本.也许实现可以使用该pNext成员进行任何操作或者可以检查实现是否支持apiVersion指定的.除此之外,我不明白为什么指定其他成员.Vulkan规范说你甚至可以使用NULL而不是使用实际的VkApplicationInfo,这使它更加无用.可以通过使用(例如)a vkGetAppInfo(instance)或类似的方法在应用程序中稍后检索此结构中的信息吗?这个结构背后有一个邪恶的总体规划吗?或者只是一个糟糕的设计?无论如何,我很好奇为什么它存在以及为什么我应该使用它.

c graphics api-design vulkan

7
推荐指数
1
解决办法
915
查看次数

如何混合UIKit和SpriteKit?

我在斯威夫特做一个游戏.我已经使用了UIKit和SpriteKit,但从未在同一个应用程序中使用过.我想知道如何利用它们的力量(它们将成为很多菜单).如果您知道我可以使用的教程,或者可以告诉我,我会非常感激.我也想知道xcode中是否有这样的快捷方式(例如故事板)

uikit ios sprite-kit swift

6
推荐指数
1
解决办法
3454
查看次数

即使 Windows 10 上不存在文件,os.path.exists也会返回True

我在 Windows 10 中遇到一个奇怪的文件问题。我编写了一个 Python 程序,它将一些数据写入位于C:\Users\jerfo\AppData\Local\xmr-haystack\xmr-haystack\Cache. 我能够调用os.makedirs路径并写入目录中的文件,而不会引发任何错误。os.path.exists返回True此路径。但是,当我尝试在文件资源管理器中查看文件时,它们不在那里。我导航到C:\Users\jerfo\AppData\Local\,但找不到该xmr-haystack目录。我通过尝试运行命令来确认这一点cd C:\Users\jerfo\AppData\Local\xmr-haystack\xmr-haystack\Cache,但失败了。我已经重现这个问题近10次了,没有明显的变化。我见过很多人有相反的问题(即不应该返回时os.path.exists返回False),但我一直无法找到与我类似的问题的实例。大家对于导致这个问题的原因有什么见解吗?谢谢你!

Python版本:3.8.6

操作系统:Windows 10 家庭版 1909

有问题的代码:

import os

cache_dir = 'C:\\Users\\jerfo\\AppData\\Local\\xmr-haystack\\xmr-haystack\\Cache'
file_path = os.path.join(cache_dir, 'cache.json')

os.makedirs(cache_dir, exist_ok=True) # No errors
f = open(file_path, 'w') # No errors
f.write('hello') # No errors
f.close() # Still no errors

print(os.path.exists(cache_dir)) # Prints True, yet the folder doesn't exist
print(os.path.exists(file_path)) # Prints True, yet the file doesn't exist …
Run Code Online (Sandbox Code Playgroud)

python windows io file python-3.x

6
推荐指数
0
解决办法
1472
查看次数

__init__.py中的Python导入类来自同一包中的文件

我觉得我应该知道这一点,因为我已经使用Python进行了很长时间的编程,但是我一直在不断学习有关精细lanuaguge的新知识。我有一个问题(很可能是重复的,但是我找不到相同的情况)是这个问题。我有这样的文件布局:

websocket/
    __init__.py
    client.py
    server.py
Run Code Online (Sandbox Code Playgroud)

如何__init__.pyclient.py或导入文件中的类server.py?漂亮又简单:P预先感谢!我的问题是不是重复这个,因为我从包内导入,并且在任何情况下,做什么人在回答确实都没有帮助。

python directory import module class

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

ld:体系结构x86_64的未定义符号

我已经制作了一个nasm程序集hello world程序,如下所示:

global start


section .text

start:
    mov rax, 0x20000004
    mov rdi, 1
    lea rsi, [rel msg]
    mov rdx, msg.len
    syscall

    mov rax, 0x20000001
    mov rdi, 0
    syscall


section .data

msg:    db  "Hello, World!", 10
.len:   equ $ - msg
Run Code Online (Sandbox Code Playgroud)

做的nasm -f macho64 print.asm很好,但ld -macosx_version_min 10.10 -o print print.o会出现如下错误:

Undefined symbols for architecture x86_64:
  "_main", referenced from:
     implicit entry/start for main executable
ld: symbol(s) not found for inferred architecture x86_64
Run Code Online (Sandbox Code Playgroud)

我不懂这啥意思 :)。有人可以帮我解决这个问题吗?谢谢!PS我正在Mac OS X优胜美地上使用。

assembly executable x86-64 nasm ld

5
推荐指数
0
解决办法
1775
查看次数

Python如何使用一行导入和使用模块

我的问题是一个相当直截了当的问题.我有这个代码从互联网上加载天然气储存数量.

from urllib.request import urlopen
print(int(str(urlopen("http://ir.eia.gov/ngs/wngsr.txt").read()).split("\\n")[4].split(" ")[2]))
Run Code Online (Sandbox Code Playgroud)

我想知道的是,我怎么能在一行中做到这一点?更具体地说,我想知道如何摆脱导入线并做这样的事情:

print(int(str(urllib.request.urlopen("http://ir.eia.gov/ngs/wngsr.txt").read()).split("\\n")[4].split(" ")[2]))
Run Code Online (Sandbox Code Playgroud)

(我将urlopen调用更改为urllib.request.urlopen)它有点像Java,如果使用完全限定名,则不需要import语句.你知道怎么办?谢谢!

python string url import python-import

4
推荐指数
2
解决办法
2889
查看次数

如何在BufferedImage中用另一种颜色替换颜色

所以我有一个有火山的图像文件.其他一切都是0xFFFF00FF(不透明洋红色).我想用0(透明)替换包含该颜色的每个像素.到目前为止我的方法看起来像这样:

public static BufferedImage replace(BufferedImage image, int target, int preferred) {
    int width = image.getWidth();
    int height = image.getHeight();
    BufferedImage newImage = new BufferedImage(width, height, image.getType());
    int color;

    for (int i = 0; i < width; i++) {
        for (int j = 0; j < height; j++) {
            color = image.getRGB(i, j);
            if (color == target) {
                newImage.setRGB(i, j, preferred);
            }
            else {
                newImage.setRGB(i, j, color);
            }
        }
    }

    return newImage;
}
Run Code Online (Sandbox Code Playgroud)

这工作正常,但似乎很慢.我见过有人这样做,但我不知道发生了什么.如果有人知道更好的方法,我非常想听听.

java bufferedimage replace image colors

3
推荐指数
1
解决办法
7299
查看次数

为什么在NASM中使用相对RIP寻址?

我有一个适用于Mac OS X的程序集hello world程序,如下所示:

global _main


section .text

_main:
    mov rax, 0x2000004
    mov rdi, 1
    lea rsi, [rel msg]
    mov rdx, msg.len
    syscall

    mov rax, 0x2000001
    mov rdi, 0
    syscall


section .data

msg:    db  "Hello, World!", 10
.len:   equ $ - msg
Run Code Online (Sandbox Code Playgroud)

我想知道这条线lea rsi, [rel msg]。为什么NA​​SM强迫我这样做?据我了解,它msg只是指向可执行文件中某些数据的指针,这样做mov rsi, msg会将地址放入rsi。但是,如果我将替换为lea rsi, [rel msg],则NASM会引发此错误(注意:我使用的是命令nasm -f macho64 hello.asm):

hello.asm:9: fatal: No section for index 2 offset 0 found
Run Code Online (Sandbox Code Playgroud)

为什么会这样?有什么特别之处leamov …

assembly nasm cpu-registers memory-address mov

2
推荐指数
2
解决办法
3874
查看次数