草庐IT

C++/OpenGL - 开始一个新项目

我正在开始一个使用C++和OpenGL制作简单游戏并自学OpenGL的新项目。我不想使用GLUT,而宁愿使用SDL来制作window等。但是,我在使用Makefile时遇到了很多奇怪的麻烦。目前,当我键入make时,当我在我的G++命令中包含$(LFLAGS)$(LDFLAGS)时,我会收到此响应:g++-5tetris.o-otetris-std=c++14Undefinedsymbolsforarchitecturex86_64:"_SDL_CreateWindow",referencedfrom:_mainintetris.o"_SDL_GL_CreateContext",ref

c++ - 在图形应用程序中,为什么着色器会在运行时加载到应用程序中?

用例如GLSL编写的着色器通常在运行时加载到图形应用程序中。我想知道为什么不只用着色器编译应用程序,这样以后就不必加载它们了。像这样:#defineglsl(version,glsl)"#version"#version"\n"#glslnamespaceglsl{namespacevs{//VERTEXSHADERS//=========================//simpleVS//=========================constexprGLchar*constsimple=glsl(450core,layout(location=0)invec3positio

c++ - GLFW 设置窗口图标

所以,我正在尝试为我的glfw窗口设置窗口图标(很明显),但我在这样做时遇到了麻烦,因为我不知道如何使用GLFWimage设置图标。文档中的代码如下所示:GLFWimageimages[2];images[0]=load_icon("my_icon.png");images[1]=load_icon("my_icon_small.png");glfwSetWindowIcon(window,2,images);但是在那里,它没有显示如何使用或创建“load_icon”函数。所以,任何人都可以提供帮助,因为我已经搜索了几个月。 最佳答案

c++ - 怎样让白色变透明

我正在玩OGL的混合。我有一个白色的背景。我在这个背景上画四边形。四边形与白色和黑色纹理绑定(bind)。颜色数组填充有颜色和alpha值:for(i=0;i显示纹理四边形:glEnable(GL_BLEND);glBlendFunc(GL_SRC_ALPHA,GL_ONE);glDisable(GL_DEPTH_TEST);glEnable(GL_TEXTURE_2D);glBindTexture(GL_TEXTURE_2D,texCheck);glLoadIdentity();glTranslatef(0.0f,0.0f,-9.0f);glBegin(GL_QUADS);glCol

c++ - 将 S3TC/DXTn 数据转换为 QImage

我加入了一个简化遗留图形代码的项目,非常感谢有关此数据转换问题的建议。输入是DXT1、DXT3、DXT5格式的压缩纹理。数据在主内存中,而不是显卡内存中。输入没有标准DDS_HEADER,只有压缩像素数据。所需的输出是QImages。使用现有的元数据,我们可以构造一个DDS_HEADER,将纹理写入临时文件,然后从该文件加载QImage。然而,我们希望避免这种解决方案并直接使用原始数据,因为它有很多很多实例。我的研究没有发现任何Qt函数可以直接执行此转换。到目前为止,听起来最有前途的方法是使用我们现有的OpenGL上下文将纹理绘制到QOpenGLFrameBufferObject。这个

c++ - 像真正的风力涡轮机一样旋转物体

#include#include#include"glut.h"voidinit(){glClearColor(0.0,0.0,0.0,0.0);glMatrixMode(GL_PROJECTION);gluOrtho2D(0.0,400,0.0,300.0);}voiddrawTurbine(){//drawthetowerglBegin(GL_LINES);glColor3f(1.0,1.0,1.0);glVertex2f(160,40);glVertex2f(163,180);glVertex2f(160,40);glVertex2f(175,40);glVertex2f(175

c++ - 控制台菜单更新 OpenGL 窗口

我正在制作一个应用程序来进行一些自定义图像处理。该程序将由控制台中的一个简单菜单驱动。用户将输入图像的文件名,该图像将使用openGL在窗口中显示。当用户选择要对图像进行某些处理时,处理完成,openGL窗口应该重新绘制图像。我的问题是我的图像从来没有绘制到窗口,而是窗口始终是黑色的。我认为这可能与我在程序中组织线程的方式有关。主执行线程处理菜单输入/输出和图像处理并调用Display方法,而第二个线程运行openGL主循环。这是我的主要代码:#include#include#include"ImageProcessor.h"#include"BitmapImage.h"usingna

c++ - iPhone OpenGL ES 不正确的 alpha 混合

我在iPhone上使用openGLES时遇到错误的alpha混合结果问题。这是我创建纹理对象的代码:glGenTextures(1,&tex_name);glBindTexture(GL_TEXTURE_2D,tex_name);glTextImage2D(GL_TEXTURE_2D,0,GL_RGBA,tex_width,tex_height,GL_RGBA,GL_UNSIGNED_BYTE,tex_data);'tex_data'是从用zlib打包的原始RGBA8888数据加载的。它按应有的方式加载,我已经用调试器检查过了。这是我在渲染前设置纹理的代码:glEnable(GL_BL

c++ - SDL 表面像素格式转换

我想将由IMG_Load()加载的SDL_Surface转换为OpenGL纹理的其他像素格式(rgba8)。我怎样才能做到这一点?我在文档中读到了有关SDL_ConvertSurface()的信息,但我不知道如何将它组合在一起。 最佳答案 给"HowToLoadanOpenGLTexturefromanSDL_Surface"一个镜头:GLuinttexture;//ThisisahandletoourtextureobjectSDL_Surface*surface;//Thissurfacewilltellusthedetails

c++ - 从 3d 对象开始

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭3年前。Improvethisquestion我刚开始使用C++,并且想使用3d对象进行编程。现在我可以使用C++或ObjectiveC,这无关紧要。3d对象有哪些书籍比较好?我想加载由3d应用程序创建的3d对象/文件,然后操作3d对象。在屏幕上移动它,旋转它等等。从哪里开始学习这个好?一本书、教程等。