- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在将草图绘制到屏幕上时遇到 openGL 问题,因为它似乎在不在点列表中的原点处添加了一个额外的点:
(0,0) 绝对不在要绘制的数组中的点中,只是似乎无法推理出来。我猜想也许我的数组大小太大或什么的,但我看不到它
这是我用于填充数组和绘制调用的代码
void PointArray::repopulateObjectBuffer()
{
//Rebind Appropriate VAO
glBindVertexArray( vertex_array_object_id );
//Recalculate Array Size
vertexArraySize = points.size()*sizeof(glm::vec2);
//Rebind Appropriate VBO
glBindBuffer( GL_ARRAY_BUFFER, buffer_object_id );
glBufferData( GL_ARRAY_BUFFER, vertexArraySize, NULL, GL_STATIC_DRAW );
glBufferSubData( GL_ARRAY_BUFFER, 0, vertexArraySize, (const GLvoid*)(&points[0]) );
//Set up Vertex Arrays
glEnableVertexAttribArray( 0 ); //SimpleShader attrib at position 0 = "vPosition"
glVertexAttribPointer( (GLuint)0, 2, GL_FLOAT, GL_FALSE, 0, BUFFER_OFFSET(0) );
//Unbind
glBindBuffer(GL_ARRAY_BUFFER, 0);
glBindVertexArray(0);
}
void PointArray::draw() {
glBindVertexArray(vertex_array_object_id);
glLineWidth(4);
glDrawArrays( GL_LINE_STRIP, 0, vertexArraySize );
glBindVertexArray(0);
}
这里是我在鼠标回调中添加点的地方
void mouseMovement(int x, int y)
{
mouseDX = x - lastX ;
mouseDY = y - lastY ;
lastX = x;
lastY = y;
if(mouse_drag)
{
cam->RotateByMouse(glm::vec2(mouseDX*mouseSens, mouseDY * mouseSens));
}
if(sketching)
{
sketchLine.addPoint(glm::vec2((float)x,(float)y));
sketchLine.repopulateObjectBuffer();
updatePickray(x,y);
}
}
最后是我的简单正交顶点着色器
in vec2 vPosition;
void main(){
const float right = 800.0;
const float bottom = 600.0;
const float left = 0.0;
const float top = 0.0;
const float far = 1.0;
const float near = -1.0;
mat4 orthoMat = mat4(
vec4(2.0 / (right - left), 0, 0, 0),
vec4(0, 2.0 / (top - bottom), 0, 0),
vec4(0, 0, -2.0 / (far - near), 0),
vec4(-(right + left) / (right - left), -(top + bottom) / (top - bottom), -(far + near) / (far - near), 1)
);
gl_Position = orthoMat * vec4(vPosition, 0.0, 1.0);
}
最佳答案
您似乎使用 vertexArraySize
作为 glDrawArrays 的参数,这是不正确的。 glDrawArrays 的计数应该是顶点数,而不是顶点数组的字节数。
在你的情况下,我猜它会是 glDrawArrays( GL_LINE_STRIP, 0, points.size());
。
关于使用 GL_LINE_STRIP 的 OpenGL 正交草图绘制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13184033/
我使用的是 iOS 5.1 我试图在同一个顶点数组中显示几批线,我想使用退化顶点将它们分开。但这似乎不起作用。在每批顶点之间绘制 I 线。 谷歌搜索问题给我的结果是退化顶点与 GL_LINE_STRI
我正在使用 OpenGL 为 iOS-Platorms 开发一个应用程序。 目前,我在绘制由多个子平面组成的平面(地形)时遇到了一个奇怪的问题,其中每个子平面由 2 个形成矩形的三角形组成。我通过调用
我在将草图绘制到屏幕上时遇到 openGL 问题,因为它似乎在不在点列表中的原点处添加了一个额外的点: (0,0) 绝对不在要绘制的数组中的点中,只是似乎无法推理出来。我猜想也许我的数组大小太大或什么
我在 GLFW 中使用 OpenGL 3.3。问题是 GL_LINE_STRIP 和 GL_LINE LOOP 给出了相同的结果。 这是二维坐标数组: GLfloat vertices[] =
我正在创建一个行星模拟,其中有 glutSolidSpheres 围绕太阳运行并且应该有跟踪线跟随它,使用 GL_LINE_STRIP 创建。 我遇到的问题是,这条轨迹并没有直接跟随行星在它后面,它看
我想同时使用线框和填充多边形,我使用黄色和黑色,这样我就可以区分它们 gl1.glColor3d(0.0, 0.0, 0.0); gl1.glBegin(GL_LINE_STRIP); gl1.
如果我使用 GL_LINES 或 GL_LINE_STRIP 渲染多段线,我是否可以假设具有低顶点索引的线段首先绘制到帧缓冲区?比如,当我使用顶点 v0、v1、v2 指定线带时,我是否可以假定先渲染线
我不知道简单代码有什么问题。该函数适用于 python 和 ctypes。 extern "C" void add_lines(bool antialias,GLdouble coordinates[
如何使用 GL_LINE_STRIP 绘制多条线,而不是在这些线之间绘制额外的线,因为它会跳转到下一个值?看图 现在红线是图中线条的实际值,而黄色线是因为它完成了 line1 的值并继续下一个,但仍然
我是一名优秀的程序员,十分优秀!