- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试编写一个简单的 opengl 程序,该程序使用 glPointSize()
和变量 pointSize
循环增大和缩小屏幕中心的单个点。打印 pointSize
的值并使用调试器单步执行代码似乎表明 pointSize
在每次迭代中正确更新。当 pointSize
增加时,点的渲染似乎也是正确的,但是当 pointSize
减小时,点仍然以其最大尺寸呈现在屏幕上,并继续呈现这样一来,无论 pointSize
的值增加或减少多少 - 我都不知道为什么。
#include <GL\glew.h>
#include <GLFW\glfw3.h>
#include <iostream>
#define numVAOs 1
GLuint renderingProgram;
GLuint vao[numVAOs];
GLuint createShaderProgram() {
const char *vshaderSource =
"#version 430 \n"
"void main(void) \n"
"{ gl_Position = vec4(0.0, 0.0, 0.0, 1.0); }";
const char *fshaderSource =
"#version 430 \n"
"out vec4 color; \n"
"void main(void) \n"
"{ color = vec4(0.0, 0.0, 1.0, 1.0); }";
GLuint vShader = glCreateShader(GL_VERTEX_SHADER);
GLuint fShader = glCreateShader(GL_FRAGMENT_SHADER);
GLuint vfprogram = glCreateProgram();
glShaderSource(vShader, 1, &vshaderSource, NULL);
glShaderSource(fShader, 1, &fshaderSource, NULL);
glCompileShader(vShader);
glCompileShader(fShader);
glAttachShader(vfprogram, vShader);
glAttachShader(vfprogram, fShader);
glLinkProgram(vfprogram);
return vfprogram;
}
void init() {
renderingProgram = createShaderProgram();
glGenVertexArrays(numVAOs, vao);
glBindVertexArray(vao[0]);
}
GLfloat pointSize = 100.0f;
GLfloat increment = 1.0f;
void display() {
glUseProgram(renderingProgram);
if (pointSize > 200 || pointSize < 2) increment *= -1.0f;
pointSize += increment;
glPointSize(pointSize);
glDrawArrays(GL_POINTS, 0, 1);
}
int main(void) {
if (!glfwInit()) exit(EXIT_FAILURE);
glfwWindowHint(GLFW_CONTEXT_VERSION_MAJOR, 4);
glfwWindowHint(GLFW_CONTEXT_VERSION_MINOR, 3);
GLFWwindow* window = glfwCreateWindow(600, 600, "Test", nullptr, nullptr);
glfwMakeContextCurrent(window);
if (glewInit() != GLEW_OK) exit(EXIT_FAILURE);
glfwSwapInterval(1);
init();
while (!glfwWindowShouldClose(window)) {
display();
glfwSwapBuffers(window);
glfwPollEvents();
}
glfwDestroyWindow(window);
glfwTerminate();
exit(EXIT_SUCCESS);
}
最佳答案
您的代码不会使用 glClear
清除屏幕。因此,当点增长时,您可以看到它。当它收缩时,它只是简单地绘制在较大点的“内部”,而您没有注意到它。如果您在点的大小改变时改变点的颜色,您可能会发现这一点。
简单地清除帧开头的颜色缓冲区:
void display() {
// default clear color is black, but you can change it:
//glClearColor(1,0,0,1);
glClear(GL_COLOR_BUFFER_BIT);
glUseProgram(renderingProgram);
...
关于c++ - glpointsize() 缩小一个点失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61946603/
我正在尝试编写一个简单的 opengl 程序,该程序使用 glPointSize() 和变量 pointSize 循环增大和缩小屏幕中心的单个点。打印 pointSize 的值并使用调试器单步执行代码
glClear(GL_COLOR_BUFFER_BIT); glEnable(GL_POINT_SMOOTH); glPointSize(20.0); glBegin(GL_POINT); {
我有这个丢分代码。我想增加点数。现在我使用此命令 glPointSize 但没有任何反应。磅值是默认值。它不会增加。 我怎样才能增加点数? glBegin(GL_POINTS); glColor3f
我正在编写一个 iOS 应用程序,它使用自定义几何体在 SceneKit 中渲染点云。 This post对我实现这一目标非常有帮助(尽管我将其翻译为 Objective-C),David Rönnq
我是一名优秀的程序员,十分优秀!