小编Arm*_*yan的帖子

困惑三角绕组和转换

首先,我想为这么长的问题道歉.你不必阅读它.您可以直接跳到问题部分,然后在需要时查找详细信息(我试图提供尽可能多的信息,因为根据我的经验,太多代码比太少更好).所以,...

我对三角形缠绕和变形有点困惑,我认为我理解.我正在尝试绘制一个定义如下的立方体:

    const float a = 0.5f; //half of the cube side length
    float positions[nComponents] =
    {
        //front face
        -a, -a, -a,
         a, -a, -a,
         a,  a, -a,

        -a, -a, -a,
         a,  a, -a,
        -a,  a, -a,

        //back face
        -a, -a,  a,
         a,  a,  a,
         a, -a,  a,

        -a, -a,  a,
        -a,  a,  a,
         a,  a,  a,

        //up face
        -a,  a, -a,
         a,  a, -a,
         a,  a,  a,

        -a,  a, -a,
         a,  a,  a,
        -a,  a,  a,

        //down …
Run Code Online (Sandbox Code Playgroud)

c++ opengl culling coordinate-transformation

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

比顶点更少的颜色

在旧的已弃用的OpenGL中,我们可以这样做:

glBegin(...);
   glColor3f(r_1,g_1,b_1);
   glVertex3f(x_1, y_1, z_1);
   glVertex3f(x_2, y_2, z_2);
   ...
   glVertex3f(x_n, y_n, z_n);

   glColor3f(r_2, g_2, b_2);
   glVertex3f(x_(n+1), y_(n+1), z_(n+1));
   glVertex3f(x_(n+2), y_(n+2), z_(n+2));
   ...
   glVertex3f(x_2n, y_2n, z_2n);

   ...
glEnd();
Run Code Online (Sandbox Code Playgroud)

也就是说,我说每个n个连续顶点共享相同的颜色.使用新的和不推荐的OpenGL可以做同样的事吗?

例如,如果我有一个立方体,这意味着我有36个顶点.如果我希望每个面都有1种颜色,那么每个连续的6个顶点必须共享该颜色.目前我已经为每种颜色人工复制了6次颜色数据,因此顶点数组和颜色数组的大小是相同的.还有其他方法吗?希望我的问题很明确.

c++ opengl

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

最简单照明模型中的光向及其转换

因此,在OpenGL学习任务中,我已经接触到基本的照明。

想象一下这个最简单的照明模型。每个顶点都有一个位置,颜色和法线。着色器将获得计算为(MV -1T的 ModelViewProjection 矩阵(MVP),Modelview矩阵(MV)和Normal矩阵(N),以及统一的LightColorLightDirection。顶点着色器执行光照计算-片段着色器仅输出插值的颜色。

现在,在有关该主题的每个教程中,我都发现有两件事使我感到困惑。首先,已经假定LightDirection位于眼睛坐标中。其次,输出颜色计算为

max(0, dot(LightDirection, N * normal))*LightColor*Color;
Run Code Online (Sandbox Code Playgroud)

我希望首先应该对LightDirection求逆,即我认为正确的公式是

max(0, dot(-LightDirection, N * normal))*LightColor*Color;
Run Code Online (Sandbox Code Playgroud)

似乎假设LightDirection实际上是实际光流矢量的逆向。

问题1:是否已建立某种惯例,即假设此模型中的LightDirection是无限远光源的矢量,而不是光方向的矢量,或者这不是主要问题,并且发生在我碰到的教程是如此假设吗?

Q2:如果LightDirection在世界坐标中而不是在眼睛坐标中,是否应使用法线矩阵或模型视图矩阵将其转换为眼睛坐标?

感谢您澄清这些事情!

opengl lighting glsl

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

我有很多关于c ++的问题让我很困惑

在2年的java之后,我在3周前开始学习c ++.它看起来如此不同,但即将到达那里.我的讲师是一个可爱的家伙,但任何时候我问一个问题,为什么这样或那样的东西.他只是回答"因为它是".

下面的代码中有很多评论带有一些随机问题,但主要问题是我得到两个构建错误,一个说arraytotal尚未初始化(即使我找到了它的值),另一个说是外部引用在主要.

有人会介意阅读代码并回答一些评论,也许我可能遇到的整体问题?

#include<string>
#include<fstream>
#include<ostream>

using namespace std;

//double decimals[5] ={2,4,6,8,10};

const int arraySize = 5;
// does an arraySize have to be const always? is it so it doesnt channge after the array has been created?

//double decimals[arraySize];

/*
   this array is being created in the function averageN() but why?
   cant i just create it up top and reference it in?
 */

// why do you have to write the name of the function up here before …
Run Code Online (Sandbox Code Playgroud)

c++ arrays initialization unresolved-external

4
推荐指数
1
解决办法
405
查看次数

重载一元运算符是否有意义?

因此,C++允许重载一元operator &(地址).当你被正确地重载时,你是否知道任何真实的例子operator &?还有第二个更具体的问题,你是否知道在保留地址语义的同时被正确重载的任何现实世界的例子operator &?TIA

c++ operator-overloading

4
推荐指数
1
解决办法
364
查看次数

quine(自我生成)SQL查询

是一篇非常有趣的wiki文章,关于打印自己的源代码而无需访问物理源文件(在文件系统中)的程序.这些文章中的例子包括C和Scheme quine程序(是的,看来它们就是这样称呼的).我记得有人问我很久以前(大约5年)是否可以编写一个"返回自己"的SQL查询.我当时很少考虑过这个问题(说实话,我根本没有考虑过它).但在阅读完这篇文章后,我回想起那件事.现在我想说的是,那个问这个问题的人不是100%可信,因为他几乎不可能知道他在说什么.但也许有可能吗?那么,有没有人知道是否存在quine SQL查询,无论"返回自己" 可能意味着在这种情况下.谢谢.

sql quine

4
推荐指数
1
解决办法
1439
查看次数

在OpenGL中重新排列数组时的效率

想象一下,我有一个顶点数组和一个索引数组.假设有可能重新排列索引数组中的元素,使得单个呼叫glDrawElementsGL_TRIANGLE_STRIP绘制所需的数字.另一种可能性是调用glDrawElements,GL_TRIANGLES但这会使索引数组更长.

它在效率方面真的很重要(我的意思是真正的效率,而不是一些微观优化)我选择哪种方式,或者底层例程是否相同?

旁注:我不愿意重新安排我使用的元素的原因GL_TRIANGLE_STRIP是因为我认为条带中的三角形将具有交替的缠绕.我错了吗?

c++ opengl performance

4
推荐指数
1
解决办法
528
查看次数

基本的OpenGL照明问题

我认为这是一个非常愚蠢和新手的问题,但后来我是图形和openGL的新手.绘制了一个球体并将光源放在附近,同时也指定了环境光,我开始尝试光和材料值,并得出一个令人惊讶的结论:glColor*当启用光照时,我们指定的颜色根本不重要.相反,等效物是材料的环境组件.这个结论是否正确?谢谢

c++ opengl lighting

4
推荐指数
1
解决办法
545
查看次数

强烈签署的集会

我不是.NET开发人员,所以可能有一些基本的东西我不知道.

我有一些使用C#编写的经验,但现在我有一个问题.我的一个项目(A)引用另一个ptoject(B),其中设置了"本地副本".当B.dll与A.exe位于同一位置时,一切正常.但是当B.dll放在PATH的公共目录中时它不起作用.

我的一位同事说他认为我应该让B签署强烈签名.他是对的吗?这就是为什么人们会强烈签署集会的原因?

我在互联网上读到了一些内容,但我看到的只是关于安全性......如果是这样,那么如何签署一个程序集以及它有什么后果?请注意我使用的是VS2003 .Net 1.1.

编辑:非常感谢您的回答,但是您提供的所有链接都是指VS和.NET的更高版本,它们在项目属性中有某种签名选项卡.有人知道(或给出一个链接)如何在VS2003 .Net1.1中强烈命名程序集?

.net c#

4
推荐指数
1
解决办法
1261
查看次数

如何在Qt中使用GLEW?

我想在Windows下使用GLEW和Qt(如果重要,则为7).

我做的是去GLEW网站,下载windows的软件包,然后把glew.dll放在System32文件夹中.在我的pro文件中,我引用了.lib文件LIBS += .../path_to_the_libs/glew32.lib和相同的glew32s.lib(不确定后者是什么).在我的QGLWidget来绘图子类中,我确信,glew.h之前包括<QGLWidget>前,因此gl.hglu.h.在main()函数中,我做的第一件事就是调用glewInit和调用,glGetError但我的应用程序以一些奇怪的代码退出,就像一个非常大的负数.

我怀疑我做错了很多事(我对Qt和OpenGL来说相对较新,对GLEW来说是新手),但我也怀疑其中一个主要错误是libs,我想,是使用MSVC构建,因此无法与MinGW链接...无论如何,任何人都可以提供如何使用Qt安装GLEW并使用它的分步说明吗?我很感激.先感谢您

编辑: 伙计们,也许我要求太多,但我真的很喜欢一步一步的指示:)

c++ opengl qt glew mingw

4
推荐指数
1
解决办法
1万
查看次数