小编Jos*_*atz的帖子

渲染有时需要不同着色器配置的多种不同材质

我正在尝试构建一个基于 3D 体素的游戏引擎来学习如何使用 vulkan。我撞到了一堵墙,我找不到有关如何攀登的文档。现在我正在绘制一个 2D 三角形并在屏幕上移动它,我的 2D 三角形被定义为顶点缓冲区中的 1 个顶点,将来会在我的顶点着色器中转换为屏幕空间。这个单个顶点被我的几何着色器变成了 3 个顶点,然后传递给我的片段着色器。

    triangle_center_position[0] = (cursor_x - (vulkan_window_width_get() / 2.0f)) / vulkan_window_width_get();
    triangle_center_position[1] = (cursor_y - (vulkan_window_height_get() / 2.0f)) / vulkan_window_height_get();
    // send to gpu via memory mapped region
    memcpy(triangle_position_buffer.mapped_memory, &triangle_center_position, sizeof(vec2) * 1);
Run Code Online (Sandbox Code Playgroud)

它以下列方式绑定在命令缓冲区中:

    VkBuffer vertexBuffers[] = {buffer->buffer};
    VkDeviceSize offsets[] = {0};
    vkCmdBindVertexBuffers(command_buffer[i], 0, 1, vertexBuffers, offsets);
    vkCmdDraw(command_buffer[i], (uint32_t) buffer->num_elements, 1, 0, 0);
Run Code Online (Sandbox Code Playgroud)

我的计划是最终修改此代码以接收 3D 点,并让我的几何着色器将我的 3D 点扩展为体素。

不幸的是,我只希望这种转换发生在体素世界中的块上,而不是其他事物(玩家模型等)上。

在 OpenGL 中,我只会调用glUseProgram()为不同的“材质”构建的两个着色器程序,这在 vulkan 中似乎非常不鼓励。我的直觉是这样的

currentMaterial = null
for …
Run Code Online (Sandbox Code Playgroud)

shader glsl vulkan

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

pcolormesh 的输入格式

我正在尝试使用 Basemap 制作热/强度图。我的输入是当时的一组纬度、经度和强度。数据集如下所示:

lat[0], lon[0] = intensity[0]
lat[1], lon[1] = intensity[1]
...
lat[n], lon[n] = intensity[n]
Run Code Online (Sandbox Code Playgroud)

在每个索引处,纬度和经度对应于正确的传感器读数。我的代码看起来像这样:

fig = plt.figure(figsize=(10, 8))


# Set title
fig.suptitle("Intensities {} {}".format(start_time, stop_time))


# US Centered Map
map_axis = fig.add_subplot(111)
map = Basemap(
    ax = map_axis,
    lat_0 = 40, lon_0 = -95,
    width = 6500e3, height = 6500e3,
    projection = 'stere',
    resolution = 'l'
)
map.drawcoastlines()


lats = ...
lons = ...
intn = ...


# Convert coordinates
lons, lats = map(lons, lats)


LONS, LATS …
Run Code Online (Sandbox Code Playgroud)

matplotlib matplotlib-basemap

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

标签 统计

glsl ×1

matplotlib ×1

matplotlib-basemap ×1

shader ×1

vulkan ×1