如何使用GL_LINE_STRIP绘制多行,但不能在这些行之间绘制额外的行,因为它会跳转到下一个值?见图
现在红线是图中线条的实际值,但黄色是因为它完成了line1的值并继续下一步但仍在这些值之间画一条线.
我正在使用的代码是这样的:vector1包含所有行值.
glGenVertexArrays(1,&Vector1_VAObject);
glGenBuffers(1,&Vector1_VBObject);
glBindVertexArray(Vector1_VAObject);
glBindBuffer(GL_ARRAY_BUFFER, Vector1_VBObject);
glBufferData(GL_ARRAY_BUFFER,vector1.size()*sizeof(GLfloat), &vector1[0] ,GL_STATIC_DRAW);
glVertexAttribPointer(0,3,GL_FLOAT,GL_FALSE, 3*sizeof(GLfloat),(GLvoid*)0);
//Clean
glEnableVertexAttribArray(0);
glBindBuffer(GL_ARRAY_BUFFER,0);
glBindVertexArray(0);
glUseProgram(lineShader->getProgram());
glBindVertexArray(Vector1_VAObject);
glDrawArrays(GL_LINE_STRIP,0,vector1.size());
glBindVertexArray(0);
Run Code Online (Sandbox Code Playgroud)
所以我的问题是如何解决这个问题呢?因此它遍历向量并且仅绘制线的值,而不是在完成绘制第一行之后跳转的值.
我正在学习OpenGL,并使用本指南和本视频在C++中编写了以下代码.我也使用GLFW进行上下文创建,使用GLEW进行GL函数大部分Shader类都是从视频上传链接的,
问题是使用glDrawElements()在主循环内部渲染会给我一个分段错误:
Segmentation fault
------------------
(program exited with code: 139)
Press return to continue
Run Code Online (Sandbox Code Playgroud)
而使用glDrawArrays()我可以毫无问题地绘制.
有谁知道这可能是由什么引起的?我认为错误可能取决于Shader类的实现,因为我在其他程序中使用了glDrawArrays(),这些程序没有使用这个类,并且关心主函数中的着色器.
program.cpp
//INCLUDE AND DECLARATIONS
#include <iostream>
#include <fstream>
// GLEW
#define GLEW_STATIC
#include <GL/glew.h>
// GLFW
#include <GLFW/glfw3.h>
#include "Shader.h"
void key_callback(GLFWwindow* window, int key, int scancode, int action, int mode);
unsigned long getFileLength(std::ifstream& file);
int loadshader(char* filename, GLchar** ShaderSource, unsigned long* len);
const GLuint WIDTH = 800, HEIGHT = 600;
//VERTEX DATA
float data[] = {
// X Y …Run Code Online (Sandbox Code Playgroud)