小编gen*_*ult的帖子

在OpenGL中使用Blender/SketchUp模型

我正在使用OpenGL制作渲染器.我在Blender/Sketchup中有纹理模型(我可以轻松地在两者之间交换),我希望能够将这些文件导出到我的渲染器中.我最初的想法是简单地导出原始面并渲染这些三角形,但我也想轻松地将纹理文件切割成纹理坐标.

通过这个,我的意思是我的模型面被雕刻成三角形.您可以在此图像中看到(下面再现)我的曲线变为24个三角形.我想知道每个三角形使用什么纹理坐标.

多边形弯曲的3D物体

DAE文件是最简单的方法吗?我一直在阅读格式的规格,看起来很简单.我想我可以解析XML并忠实地在OpenGL中重新创建模型.我想知道是否有一种更简单的方法(即不重新发明轮子的方式).

opengl blender sketchup

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

gluOrtho2D和glViewport

我有一个以世界坐标定义的对象,比如一个以(2,3)为中心的半径为4的圆.如果我希望圆不被扭曲,在视口中完全可见并且在视口内尽可能大,我如何根据前面提到的规格制定一个gluOrtho2D命令来创建一个世界窗口:

glViewport(20, 30, 1000, 500)?
Run Code Online (Sandbox Code Playgroud)

我对整个视口与世界vs屏幕等坐标感到困惑.有人可以带我走过吗?我真的想要了解这一点.

opengl viewport viewing

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

glm在Opengl中旋转使用

我正在渲染一个圆锥体,我想将它旋转,逆时针旋转90度,这样尖端朝西!我正在使用OpenGL 3+.

到目前为止,这是我在Cone.cpp中的代码:

//PROJECTION
    glm::mat4 Projection = glm::perspective(45.0f, 1.0f, 0.1f, 100.0f);

    //VIEW
    glm::mat4 View = glm::mat4(1.);
    View = glm::translate(View, glm::vec3(2.0f,4.0f, -25.0f));

    //MODEL
    glm::mat4 Model = glm::mat4(1.0);
    //Scale by factor 0.5
    Model = glm::scale(glm::mat4(1.0f),glm::vec3(0.5f));

    glm::mat4 MVP = Projection * View * Model;
    glUniformMatrix4fv(glGetUniformLocation(shaderprogram_spaceship, "MVP_matrix"), 1, GL_FALSE, glm::value_ptr(MVP));

    glClearColor(0.0, 0.0, 0.0, 1.0);

    glDrawArrays(GL_LINE_STRIP, start_cone, end_cone );
Run Code Online (Sandbox Code Playgroud)

并非所有代码都显示出来.

有人可以指导我完成轮换吗?我必须将View矩阵相乘吗?用"glm旋转"功能?

c++ opengl glm-math

13
推荐指数
3
解决办法
9万
查看次数

OpenGL:多个顶点的单顶点属性?

我有一个顶点着色器,它接受以下属性:

  • a_posCoord:顶点位置
  • a_texCoord:纹理坐标(传递给片段着色器)
  • a_alpha:透明度因子(传递给片段着色器)

我正在渲染的对象都是"广告牌"(一对直角三角形来制作一个矩形).

我正在使用单个调用来glDrawArrays渲染许多广告牌,每个广告牌都可能具有唯一的alpha值.单个广告牌有6个顶点.这里有一些伪代码来说明我如何为单个广告牌组织顶点属性缓冲区:

vertexAttributes = [

  px1,py1,pz1, // vertex 1: a_posCoord
  tx1,ty1,     // vertex 1: a_texCoord
  alpha,       // vertex 1: a_alpha

  px2,py2,pz2, // vertex 2: a_posCoord
  tx2,ty2,     // vertex 2: a_texCoord
  alpha,       // vertex 2: a_alpha

  px3,py3,pz3, // vertex 3: a_posCoord
  tx3,ty3,     // vertex 3: a_texCoord
  alpha,       // vertex 3: a_alpha

  px4,py4,pz4, // vertex 4: a_posCoord
  tx4,ty4,     // vertex 4: a_texCoord
  alpha,       // vertex 4: a_alpha

  px5,py5,pz5, // vertex 5: …
Run Code Online (Sandbox Code Playgroud)

shader opengl-es webgl vertex

13
推荐指数
1
解决办法
4419
查看次数

改善窗口大小调整行为,可能通过手动设置更大的帧缓冲区大小

我正在考虑在我的应用程序中使用glfw,同时在mac上进行开发

在成功编写一个非常简单的程序以在彩色背景上渲染三角形之后,我注意到在调整窗口大小时,重新渲染场景需要相当长的时间,因为我怀疑是由于帧缓冲区调整大小.

当我用NSOpenGLView重复实验时,情况并非如此.有没有办法暗示glfw在启动时使用更大的帧缓冲区大小,以避免昂贵的调整大小?

我正在使用GLFW 3.

你能帮助我为视网膜显示启用高DPI吗?无法在文档中找到某些内容,但在版本3中支持.

c c++ opengl glfw

13
推荐指数
1
解决办法
5899
查看次数

使用GLFW库在Mac OSX 10.9上使用OpenGL 3.3/4.1

我正试图在我的Mac OSX 10.9上使用OpenGL 3.3/4.1,因为它最终可用.我一直在使用SuperBible 5书和它的例子来学习3.3.我刚刚发现,当我的顶点着色器开始拒绝编译时,它实际上只运行OpenGL 2.1.我发现我需要得到这个GLFW库来为我做OpenGL窗口.这个库允许我使用OSX能够运行的4.1版OpenGL.我的问题是,有人有静态版本的Mac OSX 9 OpenGL库GLFW版本3.0.4他们可以发送给我吗?尝试从头开始构建库是一种真正的痛苦,因为它涉及安装CMake然后安装库代码,然后尝试将它们全部一起工作并编译.我真的只需要库,所以我可以开始运行OpenGL 3.3/4.1.

opengl macos glfw

13
推荐指数
3
解决办法
3万
查看次数

Android模拟器是否支持OpenGL ES 3.0?

我知道模拟器在SDK工具17和Android 4.0.3中支持OpenGL ES 2.0,但这是在2012年4月推出的.

Android模拟器是否支持OpenGL ES 3.0,还是我们还在等待?
如果没有,是否有任何其他第三方仿真器/模拟器(例如Genymotion)支持OpenGL ES 3.0?

android opengl-es android-emulator opengl-es-3.0

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

如何在GLSL(WebGL)中将int转换为float?

我的代码是(在void main中):

float res;

for(int i=0; i<15; i++) {

    res = float(i)/15.0;

    //...

}
Run Code Online (Sandbox Code Playgroud)

不幸的是我收到了语法错误 float(i)/15.0

如果我只是写i/15.0,那么错误是:

wrong operand types  no operation '/' exists that takes a left-hand operand of type 'mediump int' and a right operand of type 'const float' (or there is no acceptable conversion)
Run Code Online (Sandbox Code Playgroud)

如果我只是尝试i/15然后结果是一个整数,但我想得到一个浮点数.

这怎么可能投intfloat

opengl-es glsl webgl

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

SDL2:快速像素处理

我想在显示器上绘制像素,这些像素在某些参数后经常变化.EG如果红色和绿色像素发生碰撞,它们都会消失,等等.

在每一帧中,我必须操纵大约100-1000像素.我这里有一个多线程的方法,它不会给我30FPS(我想要的).目前我在RAM中存储了一个像素阵列,其中包含所有像素并且具有SDL_Surface.当数组中的像素发生变化时,它也会在Surface中发生变化,然后在完成所有操作后,会对屏幕进行blitting.我目前的做法太慢了,我对如何提高速度做了一些思考.

我目前的想法是:

  • 使用OpenGL直接在GPU上进行像素操作,一些论坛告诉我这比我目前的方法慢,因为"这不是GPU的工作原理"
  • 不要存储像素阵列,直接将BMP存储在RAM中,操作它然后将其移动到SDL_SurfaceSDL_Texture

关于如何以快速方式操作像素,还有其他方法吗?

c++ opengl sdl image-processing sdl-2

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

Mac Mojave + opengl

Mac OS 10.14 Mojave刚刚发布,自6月以来,我们已经知道OpenGL将在操作系统中被弃用."OpenGL应用程序将继续运行,但你应该切换到Metal,"来解释一下.但是,似乎没有任何文档表明您是否仍然可以使用OpenGL进行编译,或者Apple 是否可以阻止或省略正确的开发库.我目前正在开发一个基于OpenGL的图形程序,如果编译将不再起作用,则无法冒险更新.有没有人测试过这个?

编辑:有没有其他人分享Esenthel的经验?

opengl macos deprecated macos-mojave

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