草庐IT

opengl_test

全部标签

c++ - OpenGL GLSL 纹理透明度

我想使用GLSL使我的32位位图纹理透明。我的片段着色器看起来像这样:#version120uniformsampler2DmyTexture;varyingvec2TexCoord;voidmain(void){if(texture2D(myTexture,TexCoord).a!=1.0f){discard;}gl_FragColor=texture2D(myTexture,TexCoord);}但这只会使alpha等于0的像素透明,并且我想保持纹理的淡入淡出。例如在这张图片中,第一张图片是纹理,第二张是纹理mask,第三张是想要的结果:纹理和纹理mask在一个32位位图中。有谁知

c++ - 用opengl画图SDL Renderer就没用了吗?

我正在学习SDL2,但我也在使用使用OpenGL调用的imgui库。根据我在各种在线博客上阅读的内容,我不能轻易混合SDL2渲染器和opengl调用;我要么使用其中一个。我读过的大部分教程都使用渲染器,所以我不太明白如何在没有渲染器的情况下使用SDL2来绘制图元或绘制Sprite。以此为例:http://lazyfoo.net/tutorials/SDL/11_clip_rendering_and_sprite_sheets/index.php他创建了sdl渲染器:gRenderer=SDL_CreateRenderer(gWindow,-1,SDL_RENDERER_ACCELERA

c++ - 为什么 Google Test/Mock 通过 std::unique_ptr 显示泄露的模拟对象错误?

假设有一个Bar对象,它使用了一个Foo对象。所有权是独占的,因此Bar在其构造函数中将Foo作为std::unique_ptr获取。我想用Google测试框架测试Bar,所以我编写了以下代码:usingnamespacetesting;classFoo{public:virtualintF()=0;};classBar{public:Bar(std::unique_ptr&&foo):m_foo(std::move(foo)){}intB(){returnm_foo->F();}private:std::unique_ptrm_foo;};classMockFoo:publicFoo

c++ - 在 OpenGL 中设置相机

我从事游戏引擎开发已有一段时间了。我从仅使用SDL的2D图形开始,但我已经通过使用OpenGL慢慢转向3D功能。我看到的大多数关于“如何完成工作”的文档都使用了GLUT,但我没有使用它。问题是我如何在OpenGL中创建一个可以在3D环境中移动并正确显示3D模型和Sprite(例如,具有固定位置和旋转的Sprite)的“相机”。为了在OpenGL相机中设置相机,我应该关注哪些函数以及它们应该以什么顺序调用?以下是一些背景信息,说明了我为什么想要一台真正的相机。为了绘制一个简单的Sprite,我从SDL表面创建了一个GL纹理,然后将其绘制到坐标为(SpriteX-CameraX)和(Spr

c++ - OpenGL 平滑多边形

我正在尝试使用OpenGL将它变成一个平滑的多边形,但它什么也没做。有人可以解释我做错了什么吗?glColor4ub(r,g,b,a);glEnable(GL_POLYGON_SMOOTH);glHint(GL_POLYGON_SMOOTH_HINT,GL_NICEST);glBegin(GL_QUADS);glVertex2i(x,y);glVertex2i(x1,y1);glVertex2i(x2,y2);glVertex2i(x3,y3);glEnd();glDisable(GL_POLYGON_SMOOTH);glHint(GL_POLYGON_SMOOTH_HINT,GL_D

c++ - OpenGL:未定义 VBO 函数

我正在尝试使用OpenGLVBO,但是与其使用相关的函数,glGenBuffersARB()例如,都是未定义的。立即模式功能当然可以,只有这些。我正在使用VS2010,带有SFML图书馆。该库中的包含header之一包括和,可执行文件链接到glu32.lib和opengl32.lib为什么只缺少这些功能,我如何才能包括它们的使用? 最佳答案 GLEW将定义它们,其他GL扩展库也是如此。可在此处找到信息:http://www.opengl.org/resources/features/OGLextensions/Usinganexte

c++ - 使用顶点数组对象渲染三角形什么都不显示(OpenGL)

我使用OpenGL3.2、GLFW和GLEW。我尝试在OSX(10.8.2)上使用VAO和简单着色器渲染简单的三角形,但没有任何显示,只有白屏。着色器编译正常,GLEW初始化正常,glGetString(GL_VERSION)显示3.2,尝试在每一行之后放置glGetError,它没有报告任何错误。我不知道我做错了什么。这是代码:#include"include/GL/glew.h"#include"include/GL/glfw.h"#include#includeGLuintprogram;char*textFileRead(char*fn){FILE*fp;char*conten

c++ - 设置 Google Test 时找不到 -lgtest

我正在使用GoogleTestforC++并尝试在我的Linux机器上进行设置。我的make文件包含以下代码:CC=g++CFLAGS=-I$(GOOGLETESTDIR)/include-L$(GOOGLETESTDIR)/lib-lgtest-lpthread-WallDEPS=fib.hOBJS=fib.omain.oall:|r6clean:-rm-fr6$(OBJS)%.o:%.cpp$(DEPS)$(CC)-c-o$@$运行make时出现错误:/usr/bin/ld:cannotfind-lgtest我该如何解决这个问题?我对这种测试很陌生,对Linux也很陌生,所以我真的

c++ - 运行 QT Creator 时 OpenGL 的问题

我正在尝试使用QTCreator运行OpenGL的基本示例来为窗口着色。但是,调用OpenGL指令时我在编译中遇到错误:glClearColor(1.0,1.0,0.0,1.0);*.pro文件是下一个:QT+=coreguiopenglgreaterThan(QT_MAJOR_VERSION,4):QT+=widgetsTARGET=test2TEMPLATE=appSOURCES+=main.cpp\mainwindow.cpp\glwidget.cppHEADERS+=mainwindow.h\glwidget.hFORMS+=mainwindow.uiglwidget.h是下一

c++ - 在另一个线程中绘制 OpenGL

我已经为Windows创建了一个简单的OpenGL应用程序。它创建一个窗口,然后使用OpenGL命令在其上绘制一个三角形。这按预期工作。稍后我想将我的绘图代码封装到一个DLL中,这样它就可以在C#WinForms应用程序中用于绘制到WinForm。为此,我将绘图代码移到了单独的类和线程中。我的想法是,我可以将我的类“附加”到任何现有窗口并让我的线程绘制到它。可悲的是,事情似乎并没有那么简单。一旦我将窗口创建和绘制内容分离到不同的线程中,屏幕就会保持全黑。绘图调用似乎不再起作用。有没有办法让我的绘图完全独立于窗口创建和主UI线程?编辑:这是一些代码:-)这是我的渲染器(从UI线程调用时工