我想在我的场景中添加多个纹理我有一个纹理工作,但我不知道如何包含其他纹理.
#include <windows.h>
#include <gl\gl.h>
#include <gl\glut.h>
#include <stdlib.h>
#include <iostream>
void init(void);
void display(void);
void keyboard(unsigned char, int, int);
void resize(int, int);
void drawcube(float, float, float, float, float, float, int);
int is_depth;
#define ROAD 0
struct Image
{
unsigned long size_x;
unsigned long size_y;
char *data;
};
typedef struct Image Image;
const int textureCount = 1;
Image myTextureData[textureCount];
GLuint theTexture[textureCount];
char* textureFilenames[textureCount] = {"road.bmp"};
int main (int argc, char **argv)
{
glutInit(&argc, argv);
glutInitDisplayMode(GLUT_DOUBLE | GLUT_RGB);
glutInitWindowSize(600, 600);
glutInitWindowPosition(40, …Run Code Online (Sandbox Code Playgroud) 我需要做一个简单的应用程序,将3d字体渲染为图像.推荐的lib是FTGL,我如何将它与3dQt结合起来?
我试图导入.obj文件,但甚至无法呈现三角形.这是我正在尝试做的只是为了测试它是否可以展示一些东西.
glBegin(GL_TRIANGLES);
glColor3f(0.5, 0.5, 0.5);
glVertex3f(0, 0, 0);
glVertex3f(1, 1, 1);
glVertex3f(2, 2, 2);
glEnd();
Run Code Online (Sandbox Code Playgroud)
这不会显示任何内容.但是,当我为GL_LINES更改GL_TRIANGLES时,它会显示该行.
如何显示三角形?
语言:C++
操作系统:Mac 10.7.3
我正在尝试使用OpenGL创建我自己设计的3D环境模拟器,但是我的设计要求我能够直接控制运行时循环.
我正在尝试学习如何在OpenGL中实现VBO,但我很难找到足够的资源.根据我的发现,几乎每个人都以某种方式使用FreeGLUT或GLEW或GLFW或GL3.h来解决一些特定于平台的问题.
虽然这些选项可能很棒,但我根本不想将其他人的包用于此代码.我想弄清楚如何使用大多数机器上开箱即用的标准的vanilla OpenGL来使用VBO.我可以使用一些帮助来寻找OpenGL中不使用任何外部包的VBO教程.
......在有人建议之前,关于VBO的NeHe第45课使用的折旧代码(glaux)甚至不再编译,所以这不是一个选择.:\
编辑:也许我不清楚,或者我被控制,无论如何......问题的关键在于找到示例,教程或其他资源来教授OpenGL中不支持这些附加包的VBO.认真的人,告诉我"放弃"或"只使用GLEW"......这没有帮助.
我正在制作一个小型Java游戏库,我想制作更多面向Java的绘图的绘图代码,而不是调用一些C++方法来绘制API.无论如何,我担心它可能比其他图形API慢.那么这将是一个不错的选择吗?另一个问题是我找不到有用的OpenCL教程(我需要先学习它),有人知道吗?
我想在c ++和openGL中模拟太阳系,我想知道是否有一种便宜的方法可以返回一个x,y,z向量,我可以用它来更新每个行星的位置帧.
我正在尝试使用lwjgl在屏幕上渲染纹理矩形.我已经注册了纹理并加载了它们.我正在尝试编写一个方法,只使用纹理的指定区域来应用于矩形,这将允许使用spritesheets.我有这个代码来做到这一点:
public static void drawTexturedRectangle(int x, int y, int width,
int height, int textureX, int textureY, int textureWidth,
int textureHeight, Texture texture) {
System.out.println("Drawing tr:"); //console output to check input
System.out.println(" -input:");
System.out.println(" -x: " + x);
System.out.println(" -y: " + y);
System.out.println(" -width: " + width);
System.out.println(" -height: " + height);
System.out.println(" -tex-x: " + textureX);
System.out.println(" -tex-y: " + textureY);
System.out.println(" -tex-width: " + textureWidth);
System.out.println(" -tex-height: " + textureHeight);
GL11.glBindTexture(GL11.GL_TEXTURE_2D, texture.getId());
GL11.glBegin(GL11.GL_QUADS);
{
System.out.println(" -rendered:");
int vx …Run Code Online (Sandbox Code Playgroud) 所以我知道你可以使用以下方法生成缓冲区:
GLuint Buffer = 0;
glGenBuffers (1, &Buffer);
Run Code Online (Sandbox Code Playgroud)
我被告知这将在地址中生成1个缓冲区Buffer.我也被告知如果我这样做:
GLuint Buffer = 0;
glGenBuffers (2, &Buffer);
Run Code Online (Sandbox Code Playgroud)
然后它将在地址中生成2个缓冲区Buffer.那么如何访问这个第二个缓冲区呢?
这是我的代码:
#include <GL/glew.h> // include GLEW and new version of GL on Windows
#include <GLFW/glfw3.h> // GLFW helper library
#include <stdio.h>
int main () {
// start GL context and O/S window using the GLFW helper library
if (!glfwInit ()) {
fprintf (stderr, "ERROR: could not start GLFW3\n");
return 1;
}
// uncomment these lines if on Apple OS X
glfwWindowHint (GLFW_CONTEXT_VERSION_MAJOR, 4);
glfwWindowHint (GLFW_CONTEXT_VERSION_MINOR, 1);
glfwWindowHint (GLFW_OPENGL_FORWARD_COMPAT, GL_TRUE);
glfwWindowHint (GLFW_OPENGL_PROFILE, GLFW_OPENGL_CORE_PROFILE);
GLFWwindow* window = glfwCreateWindow (640, 480, "Hello Triangle", …Run Code Online (Sandbox Code Playgroud) 我是OpenGL的初学者,我编写了一个顶点着色器并执行其他操作,例如编译着色器.
顶点着色器:
in vec4 vPosition;
in vec4 vColor;
out vec4 Color;
void main(void){
gl_Position = vPosition;
Color = vColor;
}
Run Code Online (Sandbox Code Playgroud)
用C++编写这段代码之后:
GLuint PositionID = glGetAttribLocation(SProgram, "vPosition");
GLuint ColorID = glGetAttribLocation(SProgram, "vColor");
cout << "vPosition location: " << PositionID << endl << "vColor location: " << ColorID << endl;
Run Code Online (Sandbox Code Playgroud)
结果非常有趣,两个相同的位置:
vPosition location: 4294967295
vColor location: 4294967295
Run Code Online (Sandbox Code Playgroud)
那是什么原因?