Tag: opengl

OpenGL GL_POLYGON凹面多边形不会着色

当我尝试在OpenGL中使用Polygon时遇到问题。 我不知道如何解释这个,但我的所有顶点都与开头的顶点相连。 当我尝试着色对象时会发生问题。 我想绘制一个简单的对象。 void TOP (float x1, float y1, float x2, float h,float n) { float r = x2-x1; if(n==1){glPolygonMode(GL_FRONT_AND_BACK, GL_LINE);} // FOR FILL OR NO FILL OBJECT glBegin(GL_POLYGON); glVertex2f(x1,y1); glVertex2f(x2,y1); glVertex2f(x2,y1+h/7); y1=y1+h/7; glVertex2f(x2-r/5,y1+h/7); x2=x2-r/5; y1=y1+h/7; glVertex2f(x2,y1+2*h/7); y1=y1+2*h/7; glVertex2f(x2+r/5,y1+h/7); y1=y1+h/7; x2=x2+r/5; glVertex2f(x2,y1+2*h/7); cout<<y1<<endl; y1=y1+2*h/7; glVertex2f(x2-r/5,y1); x2=x2-r/5; glVertex2f(x2,y1-h/7); y1=y1-h/7; glVertex2f(x2-r/5,y1);x2=x2-r/5; glVertex2f(x2,y1+h/7); y1=y1+h/7; glVertex2f(x2-r/5,y1);x2=x2-r/5; glVertex2f(x2,y1-h/7); y1=y1-h/7; […]

如何获取有关OpenGL上下文的尽可能多的信息

您好世界,感谢您抽出宝贵时间阅读本文! 我正在用GTK2 / 3 + OpenGL编写一个程序,我运行了两个版本的程序: (a)GTK + 2 + GtkGlext扩展 – >效果很好! (b)GTK + 3 + LibX11 – >工作正常! 一切看起来都很好,除了(a)中的渲染明显快于(b)中的渲染……而且我不知道为什么。 以下是用于创建OpenGL上下文的代码部分的一些示例: (一个) // To create the context, and the associated GtkWidget GdkGLConfig * glconfig = gdk_gl_config_new_by_mode (GDK_GL_MODE_RGBA | GDK_GL_MODE_DEPTH | GDK_GL_MODE_DOUBLE); GtkWidget * drawing_area = gtk_drawing_area_new (); gtk_widget_set_gl_capability (drawing_area, glconfig, NULL, TRUE, GDK_GL_RGBA_TYPE); g_signal_connect […]

如何在opengl / SDL中使用ARGB颜色?

我正在使用Cairo渲染SVG。 开罗输出格式是ARGB。 然后我将渲染图像放在SDL_Surface中,这样我就可以将它用作openGL纹理。 当我直接使用SDL_Surface时,渲染的图像看起来很好。 但是我不得不在openGL中使用表面作为纹理,因为我需要一些openGL函数。 问题是,所有的颜色都被翻转了。 OpenGL使用RGBA而不是ARGB。 我想知道是否有人可以帮助我将SDL_Surface ARGB转换为RGBA。 有用的信息: 我用这个教程来渲染我的SVG。 http://tuxpaint.org/presentations/sdl_svg_svgopen2009_kendrick.pdf 我的软件是用C编写的。 编辑:我使用本教程将SDL_Surface用作openGL纹理。 http://www.sdltutorials.com/sdl-tip-sdl-surface-to-opengl-texture 渲染过程和opengl纹理都与教程相同。

opengl:如何在调整窗口大小时将对象保留在窗口中

我正在使用Bresenham的中点算法作为家庭作业在OpenGL上使用MS绘画类应用程序。 到目前为止,我可以绘制线条和椭圆。 在调整窗口大小时,我失去了它们。 我怎样才能让他们画出来? 完整代码: #include “GL/glut.h” #include #include int i; //int mainWindow, subWindow; int X1, Y1, X2, Y2; int modoDeDibujo; int W = 1000, H = 1000; /*void menuApp (int value) { if (value == 1) printf(“Linea\n”); if (value == 2) printf(“Circulo\n”); if (value == 3) printf(“Elipsis\n”); if (value == 4) exit(0); } void […]

glCreateShader正在崩溃

我应该有Glew和Glut的最新版本,所以这应该不是问题。 一切都应该链接,我正在使用MS visual studio 2010.我的程序编译但是当我到glCreateShader(GL_FRAGMENT_SHADER)它显示错误:“0xC0000005:访问冲突。” 我的节目: #include #include #include #include GLuint program; static char* readShaderSource(const char * shaderFile) { FILE* fp = fopen(shaderFile, “r”); char* buf; long size; if (fp == NULL) return NULL; fseek(fp, 0L, SEEK_END);//go to end size = ftell(fp); //get size fseek(fp, 0L, SEEK_SET);//go to begining buf = (char*) malloc((size +1) * […]

旋转矩阵的方向向量

如何从方向创建旋转矩阵(单位矢量) 我的矩阵是3×3,专栏和右手 我知道’column1’是正确的,’column2’是向上的,’column3’是向前的 但我不能这样做。 //3×3, Right Hand struct Mat3x3 { Vec3 column1; Vec3 column2; Vec3 column3; void makeRotationDir(const Vec3& direction) { //:(( } }

如何使用C学习OpenGL 3.x?

我知道有很多关于OpenGL的教程,但是我发现所有好的教程都使用了一些C ++库(主要是GLM),这些库很难让那些想要使用C或/和特定于Microsoft Windows的人使用。 我的问题是: 有没有人知道一个使用C并且不是Windows特定的OpenGL 3.x教程? OpenGL“红皮书”使用哪种编程语言?

找到二维三角形的中心

(是的,不幸的是,这是一个家庭作业问题) 我已经获得了一个带有x和y坐标的二维三角形结构,一个旋转变量,等等。 从那些x和y坐标创建的点,我应该在点周围绘制一个三角形并使用旋转变量适当地旋转它。 我熟悉使用GL_TRIANGLES在OpenGl中绘制三角形。 我的问题是以某种方式提取三角形的中间并在其周围绘制顶点。 我希望我已经措辞得当,因为我有点困惑。 谢谢。 编辑:是的,我要找的是质心。

将三角形条转换为三角形?

我正在使用GPC曲面细分库,它输出三角形条带。 该示例显示如下呈现: for (s = 0; s < tri.num_strips; s++) { glBegin(GL_TRIANGLE_STRIP); for (v = 0; v < tri.strip[s].num_vertices; v++) glVertex2d(tri.strip[s].vertex[v].x, tri.strip[s].vertex[v].y); glEnd(); } 问题在于这会产生多个三角形条带。 这对我来说是个问题。 我的应用程序使用VBO渲染,特别是1个多边形的1个VBO。 我需要一种方法来修改上面的代码,以便它可以看起来像这样: glBegin(GL_TRIANGLES); for (s = 0; s < tri.num_strips; s++) { // How should I specify vertices here? } glEnd(); 我怎么能这样做?

将多边形转换为三角形

为了在OpenGl中创建VBO,我需要将多边形转换为三角形。 是否有一个脚本/代码的例子可以描述这个? 对于凸多边形和凹多边形,我需要一些强大的东西。