问题:为什么不能找到-lGL?
信息:我今天早上在我的上网本上按照本网站的指导编写了一个程序,编译运行没有问题.然后我继续使用完全相同的代码并尝试在我的桌面上运行它.我的上网本编译的版本工作,但它对我大吼大叫,因为我的上网本没有显卡,而我的桌面也是如此,所以编辑得不是很好.还是跑了.
但是当我试图在我的桌面上编译它时失败了.起初它说"致命错误:GL/gl.h:没有这样的文件或目录"所以我想"等等,我认为opengl带有ubuntu,我的意思是我的上网本工作,也许我安装了一些东西而忘了它"所以我跑过apt并拉下了我认为可能有帮助的所有opengl.但是盯着212 - 1278个包(取决于我搜索的单词)可能会或可能不会与opengl相关,我不知道还有什么可以尝试.我遇到了第一个问题,但现在它抱怨它找不到-lGL,这看起来很奇怪.
任何提示,技巧,评论,讽刺?我的最终目标是能够从命令行编译c代码,我一直在使用我从上述网站获得的命令:
gcc -o gltest gltest.c -lX11 -lGL -lGLU
Run Code Online (Sandbox Code Playgroud)
我运行Ubuntu 11.04桌面,64位.Nvidia GTX465.
我有一个win32应用程序,其中我想使用openGL只是为了它的矩阵堆栈而不是任何渲染.也就是说,我想使用openGL指定相机,视口等,这样我就不必再做数学了.在创建场景时,我只想使用gluProject投影点并使用它.投影点被传递到另一个为我创建场景的库,所有的窗口句柄都是由库本身创建的,我无法访问它.
问题是,windows需要一个设备上下文进行初始化.但是,由于我没有使用openGL进行任何渲染,有没有办法在没有任何Window句柄的情况下使用openGL?
没有任何显式初始化,当我使用glGet读回矩阵时,它返回一个垃圾.有任何关于如何解决它的想法?
我想知道是否有办法生成3D对象的单个静态图像(1个单个对象表示为三角形列表),使用OpenGL或DirectX,可以让您知道定义对象的特定三角形已被使用生成形成渲染图像的每个像素.我引用了OpenGL和DirectX,因为它们是广泛使用的API图形,如果有人知道实现以前高速工作的其他方法我也会对他/她的答案感兴趣.我目前使用我自己的渲染管道软件实现来跟踪关系,但我想使用图形卡提供的功能和效果(主要是抗锯齿,阴影和特定的皮肤渲染技术).
非常感谢您的帮助
我想知道我是否可以在内存中保存当前视口的位图,然后在下一个绘制周期中简单地将该内存绘制到视口中?
我在屏幕的256x256区域绘制了大量数据点作为2D散点图,理论上我可以在每帧中渲染整个图,但在我的情况下,它需要我存储大量数据点(50K) -100K)其中大部分都是冗余的,因为256x256盒子只有~65K像素.
因此,不是重绘和渲染整个场景,t而是想拍摄场景的快照t-1并首先绘制,然后我可以在其上绘制更新.
这可能吗?如果是这样我怎么能这样做,我已经看了很多关于如何做到这一点的线索,但我找不到任何有意义的东西.
我想创建一个可以在没有源代码的任何计算机上运行的程序,这怎么可能?如果我在程序中使用OpenGL,它会有什么不同吗?
无论我尝试了什么,粒子都会在地球外部呈现而不会触及地球内部,我想要反过来!无论我改变了什么参数(尝试了2个小时),它的任何一个粒子都会在外面变细但在里面没有,或者在外部和内部都是粒子.我对此感到非常头疼,有人可以帮我解决这个问题.我使用1位用于模板缓冲器.GDEbugger显示模板缓冲区工作正常.
glEnable(GL_STENCIL_TEST);
glStencilFunc(GL_NEVER, 1, 1);
glStencilOp(GL_REPLACE, GL_REPLACE, GL_REPLACE);
globe->Use();
globe->SetWVP(&WVP, true);
Render(globe.obj");
glDisable(GL_STENCIL_TEST);
glStencilFunc(GL_EQUAL, 1, 1);
glStencilOp(GL_KEEP, GL_KEEP, GL_KEEP);
RenderParticlesUsingTransformFeedback();
Run Code Online (Sandbox Code Playgroud) 我在理解OpenGL中的光照效果方面遇到了一些问题(特别是理解预定义的变量.在某处有一个列表吗?).我一直在我的Vertex Shader文件中弄乱我的shpere.所以我设法掩盖它,但我不知道我做了什么.这是代码:
顶点着色器:
#version 330
precision highp float;
in vec3 in_Position; //declare position
in vec3 in_Color; //color passed from the cpp file
//mycode
in vec3 in_Normal;
// mvpmatrix is the result of multiplying the model, view, and projection matrices */
uniform mat4 MVP_matrix;
vec3 ambient;
out vec3 ex_Color;
void main(void) {
// Multiply the MVP_ matrix by the vertex to obtain our final vertex position (mvp was created in *.cpp)
gl_Position = MVP_matrix * vec4(in_Position, 1.0);
//mycode
ambient = vec3(0.0f,0.1f,1.0f); …Run Code Online (Sandbox Code Playgroud) 我的代码在某处出现了问题,但是对于我绘制的任意数量的基元,尽管调用glClearColor然后使用glColor3f选择颜色,但出现的颜色是完全随机的......
所以在我的Rendering类中,我循环遍历所有对象并调用它们的绘图方法,对于它们看起来像的原始图形:
inline void PrimitiveDrawer::drawWireframePrism(Vector3 pos, float radius, Vector3 col){
glClearColor( 1.0f, 1.0f, 1.0f, 1.0f );
glColor3f(col.x, col.y, col.z);
glLineWidth(3);
glBegin (GL_LINE_LOOP);
...
glEnd()
Run Code Online (Sandbox Code Playgroud)
但无论我选择什么颜色,我总会得到不同的颜色...有趣的想法是,我用这种方法绘制的所有原始线都假定它们绑定的模型的颜色(它们是网格的边界体积).它可能与我使用的模型加载器有关吗?
这会影响每个形状(在模型周围的形状之外),其中每个GL_LINE都采用相同的颜色(由于某种原因为绿色),包括我试图绘制的glutBitMapCharacter ......这是我认为困扰我的主要因素.我想选择文字绘图的颜色,目前我在做:
void renderBitmapString(float x, float y, void *font,char *string)
{
char *c;
glRasterPos2f(x, y);
for (c=string; *c != '\0'; c++) {
glutBitmapCharacter(font, *c);
}
}
void drawText(char text[20], float x, float y){
glPushMatrix();
setOrthographicProjection();
glLoadIdentity();
glClearColor( 0, 0, 0, 0 );
glColor4f(0, 0, 1, 1);
renderBitmapString(x, y,(void *)font, text);
resetPerspectiveProjection();
glPopMatrix();
}
Run Code Online (Sandbox Code Playgroud)
但文字出现绿色而不是蓝色?
首先,我尝试读取ppm文件并将其用于我的纹理,但是我不确定这是否是我的问题所在(在阅读文件中).所以我硬编码了一个小的4x4图像(随机颜色)并使用它.我仍然无法让它发挥作用.有没有人有任何见解?
data2,x2,y2都是硬编码的图像属性.
glPushMatrix();
FILE *inFile;
char dump[3];
int max, k = 0;
inFile = fopen("mountains.ppm", "r");
int x;
int y;
fscanf(inFile, "%s", dump);
//printf("%s", dump);
fscanf(inFile, "%d %d", &x, &y);
fscanf(inFile, "%d", &max);
int arraySize = y*(3*x);
int data[arraySize];
for (int i = 0; i < x; i++) {
for (int j = 0; j < y; j++) {
fscanf(inFile, "%d", &data[k++]);
fscanf(inFile, "%d", &data[k++]);
fscanf(inFile, "%d", &data[k++]);
}
}
int data2[] = { 100 , 50, 50, 40, 30, …Run Code Online (Sandbox Code Playgroud) 我刚刚开始使用OpenGL编码,并尝试运行一个显示立方体旋转的示例.我在Mac OS Pro上使用OS X 10.6上的Xcode.生成的立方体似乎"非常"快速地旋转.我看到在Windows系统上运行相同的示例,并且立方体以适当的速度旋转.为什么不同?
/* Copyright (c) Mark J. Kilgard, 1994. */
/**
* (c) Copyright 1993, 1994, Silicon Graphics, Inc.
* ALL RIGHTS RESERVED
* Permission to use, copy, modify, and distribute this software for
* any purpose and without fee is hereby granted, provided that the above
* copyright notice appear in all copies and that both the copyright notice
* and this permission notice appear in supporting documentation, and that
* the name of Silicon Graphics, …Run Code Online (Sandbox Code Playgroud)