如何在qt opengl中获取视口的大小(以像素为单位)并将其转换为Vec2f?我的着色器需要它。
我知道 getWindowSize()。
我想学习如何在 Linux 上集成 OpenGl 和 C++,但我对网上找到的教程感到非常失望......我想学习整个过程,如何编译,如何设置等等等等......我开始谷歌搜索已经两天了,有很多教程,但没有人做我喜欢的......我只找到了openGL的教程,但我想将它们与c ++一起使用。我找到了关于 c++ 的教程,但是他们开始使用已经配置好的 cmake 来构建所有东西,所以我根本没有第一步......我的意思是,很难找到从头开始指导你的东西,很好地解释了什么各种包含的库做什么等等?如果你知道什么,请告诉我。(不要像open gl的官方网站那样链接我,我'
e我正在尝试使用 libGL 和 freeglut3 编译 c++ openGL 程序。我想:
g++ main.cpp -w -lglut -lGl -o bin/app
Run Code Online (Sandbox Code Playgroud)
或者
g++ main.cpp -w -lglut -lGL -o bin/app
Run Code Online (Sandbox Code Playgroud)
结果是:
/usr/bin/ld: cannot find -lGl
collect2: error: ld returned 1 exit status
Makefile:16: recipe for target 'all' failed
make: *** [all] Error 1
Run Code Online (Sandbox Code Playgroud)
我上线了:
Ubuntu 16.04 LTS
Run Code Online (Sandbox Code Playgroud)
海湾合作委员会:
gcc version 5.3.1 20160413 (Ubuntu 5.3.1-14ubuntu2)
Run Code Online (Sandbox Code Playgroud)
libGL库
/usr/lib/x86_64-linux-gnu$ find libGL.so
libGL.so
Run Code Online (Sandbox Code Playgroud)
我安装了:
freeglut3 freeglut3-dev libglew1.5 libglew1.5-dev libglu1-mesa libglu1-mesa-dev libgl1-mesa-glx libgl1-mesa-dev
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?上次我成功编译时是在 ubuntu 14.04 上。
我在某处读到我应该安装 fglrx-glx 但该软件包不可用。
更新:
glxinfo …Run Code Online (Sandbox Code Playgroud) 我是openGL的新手,我正在努力学习基础知识.我已经创建了一个立方体的顶点及其EBO的索引,它应该是一个完美的立方体,这意味着所有方面都有相同的长度.但是我得到了这个:https: //i.gyazo.com/1fb82be379da9b18133a0ab0da8ccbf4.png这种矩形,不是方形脸.
顶点和索引如下:
std::vector<GLfloat> _Vertices = {
// Positions // Colors // Texture Coords
//Front
0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, //0 Top Right
0.5f, -0.5f, 0.0f, 0.0f, 1.0f, 0.0f, 1.0f, 0.0f, //1 Bottom Right
-0.5f, -0.5f, 0.0f, 0.0f, 0.0f, 1.0f, 0.0f, 0.0f, //2 Bottom Left
-0.5f, 0.5f, 0.0f, 1.0f, 1.0f, 0.0f, 0.0f, 1.0f, //3 Top Left
//Right
0.5f, 0.5f, 0.0f, 1.0f, 0.0f, 0.0f, 1.0f, 1.0f, //4 Top left
0.5f, 0.5f, -0.5f, 0.0f, 1.0f, 0.0f, 1.0f, …Run Code Online (Sandbox Code Playgroud) 我是 OpenGL 的新手。我的第一个项目是渲染一个 mandelbrot 集(我觉得这很有趣)并且由于必须完成的计算的性质,我认为最好在 GPU 上进行(基本上我在每个复杂平面的一部分的点,很多时间,我根据输出为这个点着色:大量可并行计算,这对 GPU 来说似乎不错,对吧?)。
因此,当单个图像没有太多计算时一切正常,但是一旦像素*迭代超过大约 90 亿,程序就会崩溃(显示的图像显示只计算了其中的一部分,青色部分是初始背景):
事实上,如果计算总数低于这个限制但足够接近(比如 85 亿),它仍然会崩溃,但需要更多的时间。所以我猜有一些问题不会出现在足够少的计算中(在它到达那里之前它总是完美无缺地工作)。我真的不知道它可能是什么,因为我真的很陌生。当程序崩溃时,它说:“Mandelbrot Set.exe 中 0x000000005DA6DD38 (nvoglv64.dll) 处的未处理异常:请求致命程序退出。”。它也是在那里指定的相同地址(它仅在我退出 Visual Studio,我的 IDE 时才会更改)。
那么这里是整个代码,加上着色器文件(顶点着色器不做任何事情,所有计算都在片段着色器中):编辑:这是项目所有 .cpp 和 .h 文件的链接,代码太大而不能放在这里,无论如何都是正确的(虽然远非完美); https://github.com/JeffEkaka/Mandelbrot/tree/master
这是着色器:
NoChanges.vert(顶点着色器)
#version 400
// Inputs
in vec2 vertexPosition; // 2D vec.
in vec4 vertexColor;
out vec2 fragmentPosition;
out vec4 fragmentColor;
void main() {
gl_Position.xy = vertexPosition;
gl_Position.z = 0.0;
gl_Position.w = 1.0; // Default.
fragmentPosition = vertexPosition;
fragmentColor = vertexColor;
}
Run Code Online (Sandbox Code Playgroud)
CalculationAndColorShader.frag(片段着色器)
#version 400
uniform int …Run Code Online (Sandbox Code Playgroud) 我想知道在3D中找到任意形状中心的准确方法.在图中,我已经解释了3个案例.
在第一种情况下,我们如何计算任意点的中心?一个想法是所有点的总和除以总点数.这是唯一的方法,它是否准确?
第二是如何计算3D中不规则任意形状的近似中心?这是1的相同情况吗?
我们如何计算由任意顶点组成的弯曲/弯曲管的中心线?对于这个问题,我们必须先解决两个案例吗?

什么是GTK +以及它与OpenGL有什么关系?我可以在C中使用OpenGL创建GUI界面吗?我研究过,人们说要用GTK +,但我根本不知道它是什么.
我只是想知道你是否会推荐未来学习OpenGL或等待Vulkan api.我目前正在从learnopengl.com学习OpenGL,并且想知道如果将来是vulkan,我是否应该继续使用它.
我想在glsl中使用Light结构,并将它们的数组定义为一个统一变量,如下所示:
uniform Light lights[LIGHT_NUM];
Run Code Online (Sandbox Code Playgroud)
不幸的是,我无法找到使用此功能的OpenGL/glsl/GL ES版本.
我正在创建一个Opengl字体批量绘图.
我想知道为什么我的std :: vector比使用数组指针慢得多.
我试过添加矢量储备和我能想到的一切.
使用矢量时,我的FPS下降了一半.
向量似乎更易于管理并且在代码中看起来更好,但我真的坚持这一点.
不确定我错过了什么简单的东西?
或者只使用数组指针更好?
#ifdef USE_VECTORS
std::vector<Vertex> m_vertices;
#else
Vertex *m_pVertex;
Vertex m_vertices[MAX_VERTICES];
#endif
Run Code Online (Sandbox Code Playgroud)
绘图char函数
void GLFont::drawChar(char c, int x, int y)
{
// 1------4
// | | 1 = (x, y)
// | | 2 = (x, y + charHeight)
// | | 3 = (x + charWidth, y + charHeight)
// | | 4 = (x + charWidth, y)
// | |
// | |
// 2------3
//
const Glyph &glyph = getChar(c); …Run Code Online (Sandbox Code Playgroud)