小编Jer*_*rem的帖子

OpenGL采样没有纹理绑定

在GLSL中对纹理进行采样时,如下所示:

vec4 color = texture(mySampler, myCoords);
Run Code Online (Sandbox Code Playgroud)

如果没有绑定到mySampler的纹理,则颜色似乎总是(0,0,0,1).

这是标准行为吗?或者在某些实现中可能未定义?我在规格中找不到任何东西.

opengl opengl-es

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

如何在 Vulkan 中限制帧速率

我知道交换链的当前模式可用于将帧率同步到屏幕的刷新率(VK_PRESENT_MODE_FIFO_KHR例如)。

但是有没有办法将帧速率限制为显示器刷新率的一小部分?(例如,我希望我的应用程序以 30 FPS 而不是 60 FPS 运行。)

换句话说,有没有办法模拟wglSwapIntervalEXT(2)OpenGL 的作用?

vulkan

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

如何在 Visual Studio 2019 中使用 cmake 项目进行“编辑并继续”构建?

我想在我的 Visual Studio cmake C++ 项目中执行“编辑并继续”。我知道我必须将 /Zi 更改为 /ZI,但是在哪里?

这是 C++

c++ cmake visual-studio

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

将一个模板类隐式转换为另一个模板类

我有一个Vector类和一个Span类(有点像 std 类),我希望 Vector 可以转换为 Span。这基本上是有效的,但是在调用模板函数时,模板参数推导失败,我仍然遇到一个问题,而且我不明白为什么。

这是一个最小的示例(和编译器资源管理器链接):

template <class T>
struct Span {};

template <class T>
struct Vector
{
    operator Span<T>() { return {}; }
};


void print_span_int(Span<int>);

template <class T>
void print_span(Span<T>);


void test()
{
    Vector<int> vec;

    print_span_int(vec);        // ok
    print_span(vec);            // error
}
Run Code Online (Sandbox Code Playgroud)

我尝试添加推导指南,但这没有帮助:

template <class T>
Span(Vector<T>&) -> Span<T>;

print_span(Span(vec));      // now I can do that though :|
Run Code Online (Sandbox Code Playgroud)

是否可以print_span(vec);在不Vector继承的情况下进行编译Span

c++

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

包装opengl模型的最佳方法

简而言之:为更高级别的"模型"对象包装OpenGL的缓冲区,着色器和/或矩阵的"首选"方法是什么?

我正在尝试用基于核心OpenGL 3.3的C++编写这个微小的图形引擎,我想实现一个尽可能干净的解决方案来包装更高级别的"模型"对象,该对象将包含其顶点缓冲区,全局位置/旋转,纹理(也可能是着色器?)和潜在的其他信息.

我已经研究过这个名为GamePlay3D的开源引擎,并不完全同意其解决这个问题的方方面面.是否有任何好的资源可以为现代OpenGL讨论这个主题?或者有一些简单而干净的方法来做到这一点?

opengl game-engine

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

标签 统计

c++ ×2

opengl ×2

cmake ×1

game-engine ×1

opengl-es ×1

visual-studio ×1

vulkan ×1