小编Tho*_*ine的帖子

如果更改陈述?

我试图使我的代码更有效,并替换我写的一堆if语句.到目前为止,我的程序基本上检查输入了什么运算符(例如+, - 等),然后计算它.例如,1 + 5给出6.当程序评估数字之间的符号(在我的例子中为"+")时,它将检查操作符是什么,然后相应地继续.例如,如果它是"+",它将采用1并添加5.代码的工作方式如下:

switch (op) {
    case "+": // Addition
        return args[0] + args[1]; 
    case "-": // Subtraction
        return args[0] - args[1]; 
    case "*": // Multiplication
        return args[0] * args[1]; 
    case "/": // Division
        return args[0] / args[1]; 
Run Code Online (Sandbox Code Playgroud)

我想知道是否有可能用某种语句替换整个块,该语句将从String中检测运算符并将其转换为操作?我意识到对于一些运算符来说,使用switch语句可能更容易,但是我有很多它们,并且在switch语句顶部和底部评估运算符之间存在5-10ms的差异.

java if-statement switch-statement

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

这是在 OpenGL 中渲染多个灯光的好方法吗?

我目前正在按照几个在线教程在 OpenGL 中编写图形渲染器。我最终得到了一个具有渲染管道的引擎,该管道基本上包括使用简单的 Phong 着色器渲染对象。我的 Phong Shader 有一个基本的顶点着色器,它根据变换修改顶点,还有一个片段着色器,如下所示:

// PhongFragment.glsl
uniform DirectionalLight dirLight;
...
vec3 calculateDirLight() { /* Calculates Directional Light using the uniform */ }
...
void main() {
    gl_FragColor = calculateDirLight();
Run Code Online (Sandbox Code Playgroud)

我的对象的实际绘图看起来像这样:

// Render a Mesh
bindPhongShader();
setPhongShaderUniform(transform);
setPhongShaderUniform(directionalLight1);
mesh->draw(); // glDrawElements using the Phong Shader
Run Code Online (Sandbox Code Playgroud)

这种技术效果很好,但有一个明显的缺点,那就是我只能有一个定向光,除非我使用均匀阵列。我可以这样做,但我想看看还有哪些其他可用的解决方案(主要是因为我不想在着色器中制作大量灯光的数组并且其中大部分为空),我偶然发现了这个一,这看起来效率很低,但我不确定。它基本上涉及每次使用新灯光重新绘制网格,如下所示:

// New Render
bindBasicShader(); // just transforms vertices, and sets the frag color to white.
setBasicShaderUniform(transform); // Set transformation uniform
mesh->draw();
// Enable Blending so that all light contributions are added …
Run Code Online (Sandbox Code Playgroud)

opengl graphics shader rendering opengl-es

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

用数组初始化一个类?

使用STL的向量类,我可以使用列表(或数组)项来初始化向量:

std::vector<int> = { 1, 2, 3 };
Run Code Online (Sandbox Code Playgroud)

我可以将这个功能实现到我自己的类中吗?我正在编写自己的Vector类来实践数据结构,并希望:

MyVectorClass<int> = { 1, 2, 3 };
Run Code Online (Sandbox Code Playgroud)

c++ initialization class

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